getline()出现文件I/O错误

File I/O error with getline()

本文关键字:错误 文件 getline      更新时间:2023-10-16

我的代码:

void listall()
{
    string line;
    ifstream input;
    input.open("registry.txt", ios::in);
    if(input.is_open())
    {
        while(std::getline(input, line, "n"))
        {
            cout<<line<<"n";
        }
    }
    else
    {
        cout<<"Error opening file.n";
    }
}

我是C++的新手,我想逐行打印出一个文本文件。我正在使用代码::块。

它给我的错误是:

错误:调用"getline(std::ifstream&,std::string&;,const-char[2])"时没有匹配的函数

这些是std::getline:的有效过载

istream& getline (istream&  is, string& str, char delim);
istream& getline (istream&& is, string& str, char delim);
istream& getline (istream&  is, string& str);
istream& getline (istream&& is, string& str);

我相信你的意思是std::getline(input, line, 'n')

"n"不是一个字符,它是一个大小为2的字符数组(1个用于'n',另一个用于NUL终止符'')。

写这个:

#include <fstream>    // for std::ffstream
#include <iostream>   // for std::cout
#include <string>     // for std::string and std::getline
int main()
{
    std::ifstream input("registry.txt");
    for (std::string line; std::getline(input, line); ) 
    {
         std::cout << line << "n";
    }
}

如果你想进行错误检查,它是这样的:

if (!input) { std::cerr << "Could not open file.n"; }