我试着做以下事情
myfile.open("file.txt");
while(!myfile.eof())
{
getline(myfile,sline);
delimiter = sline.substr(2,1);
}
cout << "Delimiter is " << delimiter << endl;
Run Code Online (Sandbox Code Playgroud)
我的file.txt是这样的
AD#Andorra#AN#AD#AND#20.00#Andorra la Vella#Europe#Euro#EUR#67627.00
AE#United Arab Emirates#AE#AE#ARE#784.00#Abu Dhabi#Middle East#UAE Dirham#AED#2407460.00
Run Code Online (Sandbox Code Playgroud)
它在运行时返回错误代码
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::substr
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)
我希望将值#作为我的分隔符,
我的.h文件得到了这个声明
#define LINE_DATA_DELIMITER ","
Run Code Online (Sandbox Code Playgroud)
我可以将LINE_DATA_DELIMITER重新定义为"#",而不是使用"#",我可以使用变量分隔符的值来定义.
更新:问题1已解决..我需要第二个问题的帮助谢谢!
它发生的原因是你运行循环次数太多了.eof只有在一次读取失败后才会发生这种情况.
试试这个
myfile.open("file.txt");
while(getline(myfile,sline))
{
delimiter = sline.substr(2,1);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
317 次 |
| 最近记录: |