读取以c ++分隔的文件

时间:2012-04-24 06:17:32

标签: c++ file-io

我正在尝试在C ++中读取一个文件,其中字符用条形“|”分隔, 最好的方法是什么?

由于

3 个答案:

答案 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;
}
相关问题