为什么C ++中的getline()不起作用? (没有匹配函数来调用'getline(std :: ofstream&,std :: string&)'

时间:2013-09-06 13:18:47

标签: c++ getline

我正在尝试从文件中读取,但C ++不想运行getline()

我收到此错误:

C:\main.cpp:18: error: no matching function for call to 'getline(std::ofstream&, std::string&)'
          std::getline (file,line);
                                 ^

这是代码:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <string>

using namespace std;

int main(){
    string line;

    std::ofstream file;
    file.open("test.txt");
    if (file.is_open())
     {
       while ( file.good() )
       {
         getline (file,line);
         cout << line << endl;
       }
       file.close();
     }


}

2 个答案:

答案 0 :(得分:7)

std::getline旨在用于输入流类(std::basic_istream),因此您应该使用std::ifstream类:

std::ifstream file("test.txt");

此外,使用while (file.good())作为循环中输入的条件通常是不好的做法。试试这个:

while ( std::getline(file, line) )
{
    std::cout << line << std::endl;
}

答案 1 :(得分:1)

std::getline输入流中读取字符并将其放入字符串中。在您的情况下,getline的第一个参数类型为ofstream。您必须使用ifstream

std::ifstream file;