我想实现我的字符串类函数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。我构建这个方法,所以我可以通过数据文件进行解析,并把信息在一个载体
getline
不是std::ifstream
的成员,所以不要调用它DataFile
。
DataFile.getline(DataFile,str,',');
变
getline(DataFile,str,',');
此外,传递到文字字符的引用不是个好主意不编译 - 试图剥离const
ness),以便
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要求他们之前清理休息。