getline を使用して改行の終わりまで読み取りますが、c++ getline はスペースまで取得します。
私はtxtファイルデータを持っています
アドレス(タブ文字)1420 ハッピーレーン
私がする時
getline(reader, ss, '\t') ss 文字列でアドレスを取得します。getline(reader, ss, '\n') を実行すると、1420 になります。
「1420 Happy Lane」がいっぱい欲しいのですが、どうやって手に入れるのですか?
ありがとう。
#include <fstream>
#include <string>
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;
int main( int argc, char *argv[] )
{
if( argc < 2 )
{
cout << "Missing filename as first argument" << "\n";
exit(2);
}
vector<string> myvector;
string ss;
int i=0, j=0;
ifstream reader(argv[1]);
if (! reader )
{
cout << "Error opening input file : " << " " << argv[1] << '\n';
return -1;
}
while( !reader.eof())
{
if ((i+1) % 2 == 0 )
getline(reader, ss, '\n');
else
getline(reader, ss, '\t');
if (ss[0] == '#')
{
//Skip
getline(reader,ss, '\n');i=0;
continue;
}
i++;
myvector.push_back(ss);
}
reader.close();
vector<string>::iterator it;
stringstream stream;
int vecloc=1;
string tag;
string sData;
cout << "myvector contains: \n";
for ( it=myvector.begin() ; it < myvector.end(); it++ )
{
switch (vecloc)
{
case 1: stream << *it; stream >> tag; vecloc++;break;
case 2:
stream << *it; stream >> sData;
// Do job
cout << tag << " " << sData << "\n";
// Reset.
vecloc=1; break;
default : break;
}
// Clear String stream
stream.str(""); stream.clear();
}
return(0);
}
出力
/home/sr/utl
猫abc.txt
ちょっとC ++は私を夢中にさせます。
/home/sr/utl
a.out abc.txt
myvector には以下が含まれます。
ちょっとC ++