c++ - 没有匹配的函数来调用 getline()

标签 c++ fstream getline

所以我正在做一些事情,但我似乎不明白为什么它不起作用。

void display_alls()
{
    ifstream fpd;
    fpd.open("student2.txt",ios::in);
    if(!fpd)
    {
        cout<<"ERROR!!! FILE COULD NOT BE OPEN ";
        getch();
        return;
    }
    while(fpd)
    {   
        int pos;
        string seg;

        cout<<"\tUSN"<<setw(10)<<"\tName"<<setw(20)<<"Book Issued\n";
        //fp.seekg(pos,ios::beg);

        getline(fpd,st.usn,'|');
        getline(fpd,st.name,'|');
        getline(fpd,st.email,'|');
        getline(fpd,st.phone,'|');
        getline(fpd,st.stbno,'|');
        getline(fpd,seg);

        cout<<"\t"<<st.usn<<setw(20)<<st.name<<setw(10)<<st.stbno<<endl;
    }
    fp.close();
}

[Error] D:\library\library_v1.cpp:514: error: no matching function for call to `getline(std::ifstream&, char[20], char)'

getline 的每一行都出现错误!但不在“getline(fpd,seg);

这个东西不能在 MingW 编译器上运行,但可以在我的大学系统上运行,我不知道他们可能使用的是较旧的编译器,你能告诉我出了什么问题吗? 非常感谢。

最佳答案

错误消息表明代码正在尝试读入 20 个字符的数组。不幸的是,std::getline 不处理字符数组。它只读取 std::string,这就是它与 string seg; 一起使用的原因;对于字符数组,您需要使用 std::istream::getlineLink to documentation page

但是,如果您可以用 std::string 替换数据结构中的字符数组,生活可能会更轻松。

关于c++ - 没有匹配的函数来调用 getline(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50090926/

相关文章:

c++ - 设置 Windows 网络映射的标签

c++ - GMP 文档中的命名约定

c++ - 默认情况下 std::ofstream 是否截断或追加?

c++ - 对 fstream 输出操作执行 'catch all' 错误检查的正确方法是什么?

c++ - 无法在 C++ 中获取包含空格的输入

c++ - 如何测试一行是否为空?

c++ - VS2008对于C++开发相比VS2005有什么优势?

c++ - 哪个更快/首选 : memset or for loop to zero out an array of doubles?

C++ fstream 正在写十六进制而不是字符串?

C++读入文件,忽略逗号并将数据输出到屏幕