我正在尝试在C ++中读取一个文件,其中字符用条形“|”分隔, 最好的方法是什么?
由于
答案 0 :(得分:4)
我假设字段用条形分隔,但记录用换行符分隔。
首先,使用std::getline
:
std::string line;
std::getline(std::cin, line);
然后,在|
boudaries打破界限。
std::stringstream sline(line);
std::string field;
std::getline(sline, field, '|');
...
std::getline(sline, field, '|');
答案 1 :(得分:1)
根据您使用的代码的复杂程度,您要查找的是CSV(逗号分隔值)文件阅读器的变体。有成千上万的人,如果你的代码需要强大,我建议你使用其中一个,而不是自己写,因为有复杂性,如:
最受欢迎的是Boost tokeniser,它应该很容易起床和使用。您只需确保告诉令牌服务器您正在使用“|”作为一个现场分离器。
请查看this related question以获取更多指示。
答案 2 :(得分:0)
假设您有一个名为“file.dat”的文件 它看起来像这样:
item1|item2|item3|item4|item5|item6
该程序将打印文件中的每个项目:
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
int main(){
std::ifstream infile("file.dat");
std::string item;
getline(infile,item,'|');
while (!infile.eof()){
std::cout << item << std::endl;
getline(infile,item,'|');
}
return EXIT_SUCCESS;
}