我的自定义字符串类中实现函数getline

问题描述 投票:0回答:1

我想实现我的字符串类函数getline方法将从数据文件获取行,直到达到deliminator。我的IDE是给我的,说没有匹配功能的错误。

我试着开关从ifstream的类型fstream的或istream的其中没有任何改变。

我的getline函数的:

ifstream& getline(ifstream &is,myString& s,char& delim)
{
    char *c=new char[500];
    is.get(c,500);
     int i=0;
    while(c[i-1]!=delim)
    {
        is.get(c,500);
        s+=c;
    }
    delete[]c;
    return is;
}

我公司主营:

int main(int argc, char*argv[])
{
    myString str;



ifstream DataFile(NULL);
cout << "AFF: " << argv[1] << endl;
cout<<"AFF: "<<argv[2]<<endl;
DataFile.open(argv[1]);
if(!DataFile)
{
    cout<<"File not found"<<endl;
}
DataFile.getline(DataFile,str,',');


cout<<str<<endl;


}

我不能使用STL string类的,我需要阅读在由分隔的文件,或A / N。我构建这个方法,所以我可以通过数据文件进行解析,并把信息在一个载体

c++
1个回答
0
投票

getline不是std::ifstream的成员,所以不要调用它DataFile

DataFile.getline(DataFile,str,',');

getline(DataFile,str,',');

此外,传递到文字字符的引用不是个好主意不编译 - 试图剥离constness),以便

ifstream& getline(ifstream &is,myString& s,char& delim)

需要成为

ifstream& getline(ifstream &is,myString& s, const char & delim)

要么

ifstream& getline(ifstream &is,myString& s, char delim)

因为传递一个参照char并没有真正获益良多。

雷米勒博使注释中的点,你真正想要做的就是打开你getline与处理任何标准输入流

istream& getline(istream &is,myString& s, char delim)

这需要照顾的问题作为aksed,但请注意,有几个逻辑错误(c[i-1]设置i至零后立即跳右出我)在getline的实施,可能会导致未来的两个问题。我建议chat with the Rubber Duck和使用your development environment's debugger要求他们之前清理休息。

© www.soinside.com 2019 - 2024. All rights reserved.