2

我正在尝试从文件中读取,但 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();
     }


}
4

2 回答 2

9

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;
}
于 2013-09-06T13:20:04.233 回答
2

std::getline从输入流中读取字符并将它们放入字符串中。在您的情况下,您的第一个参数getline是 type ofstream。您必须使用ifstream

std::ifstream file;
于 2013-09-06T13:25:46.113 回答