Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从文本文件中的特定列读取数据_C++ - Fatal编程技术网

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。请花些时间阅读,尤其是名为和的部分。还有请和。最后,请学习如何创建。文本文件没有列。文本文件有行。您必须“解码”这些“列”你自己。这是非常低效的。是的,它可以改进,但这显示了作为第一次削减的情况。你至少应该警告过多的分配和拷贝。