2

我的代码:

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])'

4

2 回答 2

4

这些是 的有效重载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 代表 the '\n',另一个代表 NUL-terminator '\0')。

于 2013-07-18T23:28:02.043 回答
1

写这个:

#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"; }
于 2013-07-18T23:27:49.443 回答