繁体   English   中英

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

[英]How to read data from a specific column in a text file

我有一个带有一些列的文本文件

 name,age,address,gender

我知道我可以用getline();访问一行getline(); ,但是当我得到带有getline();数据的字符串时getline(); 返回我想阅读一些特定的专栏。 我怎么做 ?

我看到了解决此问题的方法,但它尚不知道是在Java中,所以我决定将其发布为C ++答案

方法是相同的:逐行读取文件并标记化,如果我想查看第二列,则获取数组的第二个元素。 由于可以进行很多复制,因此可以进行改进,但是这里有个主意。

#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;
}

无论您是用Java还是C ++进行询问,方法都是相似的。

阅读完整行之后。 用定界符分隔行。

在Java中,

line.split(",");

在C ++中,您可以使用str.find(",")来获取逗号的位置。 然后将定界标记子字符串化。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM