我不太明白这个功能是如何运作的。
我写了一个简单的编程,用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 ++的新手。
答案 0 :(得分:5)
您没有显示包含错误的代码,但错误显示您尝试使用atoi
类型的参数调用std::string
。 atoi
采用C字符串(man atoi
),因此您需要将其称为:
atoi( line.c_str() );
答案 1 :(得分:0)
你打算打电话给哪个功能? gnu&#39; C&#39; 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 );
答案 2 :(得分:0)
将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;
}