-4

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

谢谢

4

3 回答 3

4

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

首先,使用 阅读文本行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, '|'); 
于 2012-04-24T06:23:03.617 回答
1

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

  • 如果您的“值”之一实际上包含“|”怎么办 引号中的字符说?
  • 如果您的“值”之一包含回车或换行怎么办?

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

看看这个相关问题以获得更多指示。

于 2012-04-24T08:10:29.797 回答
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;
}
于 2012-04-24T07:21:06.733 回答