C++ 如何从文本文件中的特定列读取数据
我有一个包含一些列的文本文件C++ 如何从文本文件中的特定列读取数据,c++,C++,我有一个包含一些列的文本文件 name,age,address,gender 我知道我可以使用getline()访问一行,但当我获取包含getline()数据的字符串时返回我想读一些特定的列。我该怎么做 我看到了一个解决这个问题的方法,但它是在java中,我还不知道,所以我决定把它贴到C++的答案 。方法是一样的:如果我想看到第二列,则逐行读取文件并标记,同时取数组的第二个ELEM。 它可以改进,因为它有很多副本,但想法就在这里 #include <sstream> #inclu
name,age,address,gender
我知道我可以使用getline()访问一行
,但当我获取包含getline()数据的字符串时代码>返回我想读一些特定的列。我该怎么做
<>我看到了一个解决这个问题的方法,但它是在java中,我还不知道,所以我决定把它贴到C++的答案 。方法是一样的:如果我想看到第二列,则逐行读取文件并标记,同时取数组的第二个ELEM。
它可以改进,因为它有很多副本,但想法就在这里
#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;
}
#包括
#包括
#包括
std::字符串行;
向量strs;
std::ifstream infle(“thefile.txt”);
while(std::getline(infle,line))
{
strs.clear();
boost::split(strs、line、boost::是(“\t”)中的任意一个);
CUT< P>是java或C++中的询问,方法类似。
读完整行后,按分隔符拆分该行
在Java中,它只是
line.split(",");
<>在C++中,可以使用<代码> STR.DISH(“,”)<代码>获取逗号的位置。然后将分隔的标记串出。
设置一个count
变量,以计算到目前为止为到达所需列而分隔的令牌数。您还可以解析C字符串(如果使用STL字符串,请将C字符串复制到字符数组!)使用strtok可以很好地工作,尽管需要一个单独的副本是因为strtok确实修改了字符串和一些静态内存(或者线程本地存储;我不依赖它)欢迎访问stackoverflow.com。请花些时间阅读,尤其是名为和的部分。还有请和。最后,请学习如何创建。文本文件没有列。文本文件有行。您必须“解码”这些“列”你自己。这是非常低效的。是的,它可以改进,但这显示了作为第一次削减的情况。你至少应该警告过多的分配和拷贝。