簡體   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