簡體   English   中英

C ++ getline()函數

[英]c++ getline() function

我不太了解此功能的工作原理。

我寫了一個簡單的程序,用getline()讀了一行。

例如:

ifstream in;
in.open("example.txt");
string line;
getline(in, line);
cout << line << endl;

當我嘗試運行該程序時,收到了這樣的錯誤消息。

`assign1_2.cpp:33:20: error: cannot convert 'std::string {aka std::basic_string<char>}'    to 'const char*' for argument '1' to 'int atoi(const char*)'

我根本不明白這里出了什么問題。 請幫忙!。 我是C ++的新手。

您沒有顯示帶有錯誤的代碼,但是錯誤表明您嘗試使用std::string類型的參數調用atoi atoi需要一個C字符串( man atoi ),因此您需要像這樣來調用它:

atoi( line.c_str() );

您嘗試調用哪個功能? gnu'C'getline函數或istream :: getline嗎?

istream :: getline具有以下簽名

istream& istream::getline( char* str, streamsize count)
istream& istream::getline( char* str, streamsize count, char delim )

因此,您的呼叫應類似於:

char* buf[1000]
in.getline( buf, 1000 );

string line更改為char line[2000]如下所示:

#include <iostream>
#include <fstream>
using namespace std;


int main()
{
    char line[2000];
    fstream in;

    in.open("example.txt",ios::in);

    while(!in.eof()) 
    {
          in.getline(line,2000);
    }   

    in.close();
    cout <<line;
    cout <<endl;

    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM