c ++ getline()函数

时间:2011-12-19 14:16:04

标签: c++

我不太明白这个功能是如何运作的。

我写了一个简单的编程,用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 ++的新手。

3 个答案:

答案 0 :(得分:5)

您没有显示包含错误的代码,但错误显示您尝试使用atoi类型的参数调用std::stringatoi采用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;
}