繁体   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