繁体   English   中英

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

[英]no matching function for call to 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();
}

[错误] D:\\ library \\ library_v1.cpp:514:错误:没有匹配函数调用`getline(std :: ifstream&,char [20],char)'

getline每一行都有错误! 但不在“ getline(fpd,seg); ”中

这个东西在MingW编译器上不起作用,但是在我的大学系统上工作,idk也许他们使用的是较旧的编译器,请您告诉我哪里出了问题。 非常感激。

如果您要使用的是std::getline ,则在<string>标头中定义。 您将要包括它:

#include <string>

然后您可以通过std::getline调用它。 如果您厌倦了键入std:: ,则可以执行以下操作:

using namespace std;

根据IDE或构建设置的不同,有时这些事情可能已经为您完成。 这可能就是为什么它可以在学校计算机上工作,而不是在您的计算机上工作的原因。

错误消息表明该代码正在尝试读入20个字符的数组。 不幸的是std::getline不处理字符数组。 它只会读入std::string ,这就是为什么它可以与string seg;一起使用的原因string seg; 对于字符数组,您需要使用std::istream::getline 链接到文档页面

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM