1. ホーム
  2. c++

TABをセパレータとし、中央のフィールドを空にしたテキストファイルを読み込むC++メソッド?

2022-02-16 10:48:15

データファイル:testData.txt

内容です。

111 222 444 555





感想

getline() は testData.txt の最初の行を文字列に読み込み、次に n 番目のセパレータを検索して位置を特定し、n 番目のフィールドの長さを決定して substr を使い、そのフィールドをインターセプトして対象の文字列に割り当てています。


<スパン 手順

#include <iostream>
#include <fstream>
using namespace std;
void GetStringFromCSV(std::string line, int nIdx, std::string &str)
{
	int nSPos = 0; //record the start position
	for(int i = 0; i < nIdx - 1; ++i)
	{
		nSPos = line.find('\t', nSPos); //find the next TAB starting from nSPos
		++nSPos; //find the next character from the currently found '\t' key position, starting from
	}
	
	int nEPos = line.find('\t', nSPos); //find the end position of the third field
	if(nEPos ! = string::npos) //find the TAB character of
	{
		str = line.substr(nSPos, nEPos - nSPos);
	}
	else
	{
		str = line.substr(nSPos, line.size() - 1 - nSPos);
	}
}
int main(void)
{
	string sTarget, line;
	ifstream in(". /testData.txt");
	if(!in.is_open())
	{
		cout << "open . /testData.txt fail!" << endl;
		return -1; 
	}	
	getline(in, line);
	GetStringFromCSV(line, 3, sTarget);
	cout << ". /testData.txt The contents of the third field in the first line of the record, separated by the tab key, are: " << sTarget << endl;	
	in.close();
	return 0;
}






ps:他のデリミターで区切られたファイルにも適用されるように'˶'ᴗ'を変更するだけです。