[英]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.