[英]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.