读取由 C++ 条分隔的文件

reading in a file separated by bars c++

本文关键字:文件 分隔 C++ 读取      更新时间:2023-10-16

>我正在尝试读取字符由条形"|"分隔的C++文件,最好的方法是什么?

谢谢

我假设字段用条分隔,但记录用换行符分隔。

首先,使用 std::getline 阅读文本行:

std::string line;
std::getline(std::cin, line);

然后,在|肚子上打破界限。

std::stringstream sline(line);
std::string field;
std::getline(sline, field, '|');
...
std::getline(sline, field, '|'); 

根据您使用的代码的复杂性,您要查找的是 CSV(逗号分隔值)文件读取器的变体。那里有成千上万的代码,如果你的代码需要健壮,我建议你使用其中一个而不是编写自己的代码,因为存在以下复杂性:

  • 如果您的某个"值"实际上包含"|"字符怎么办行情说?
  • 如果您的某个"值"包含回车符怎么办还是换行?

最受欢迎的之一是Boost令牌器,它应该很容易上手和使用。您只需要确保告诉 tokeniser 您正在使用"|"作为字段分隔符。

查看此相关问题以获取更多提示。

假设你有一个名为"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;
}