如何从文本文件中的特定列读取数据

How to read data from a specific column in a text file

本文关键字:读取 数据 文本 文件      更新时间:2023-10-16

我有一个包含一些列的文本文件

 name,age,address,gender

我知道我可以访问带有getline();的行,但是当我获得包含getline();返回的数据的字符串时,我想读取一些特定的列。我该怎么做?

我看到了这个问题的解决方案,但它是在我还不知道的 java 中,所以我决定发布这个以获得 c++ 答案

无论你是用Java还是C++问,方法都是相似的。

阅读整行后。用分隔符分割行。

在Java中,它只是

line.split(",");

在C++中,您可以使用str.find(",")来获取逗号的位置。然后将分隔的令牌子串起来。

设置一个 count 变量来计算到目前为止已分隔的令牌数,以到达所需的列。

方法是相同的:逐行读取文件并进行标记化,如果我想查看第二列,则采用数组的第二个选项。它可以改进,因为它做了很多副本,但想法就在这里。

#include <sstream>
#include <string>
#include <boost/algorithm/string.hpp>   
std::string line;
vector<string> strs;
std::ifstream infile("thefile.txt");
while (std::getline(infile, line))
{
    strs.clear();
    boost::split(strs,line,boost::is_any_of("t"));
    cout<<"age ="<<strs[1]<<endl;
}

您也可以使用 strtok 解析 C 字符串(如果您使用 STL 字符串,请将 C 字符串复制到 char 数组中!它将很好地工作,尽管需要单独的副本是由于strtok确实修改了字符串以及一些静态内存(或者,也许是线程本地存储;我不会依赖它(