データ形式が「int、int、...、int、string、int」の場合、stringstream (のみ) を使用してフィールドを適切にデコードできますか?
[コード]
int main(int c, char** v)
{
std::string line = "0,1,2,3,4,5,CT_O,6";
char delimiter[7];
int id, ag, lid, cid, fid, did, j = -12345;
char dcontact[4]; // <- The size of <string-field> is known and fixed
std::stringstream ssline(line);
ssline >> id >> delimiter[0]
>> ag >> delimiter[1]
>> lid >> delimiter[2]
>> cid >> delimiter[3]
>> fid >> delimiter[4]
>> did >> delimiter[5] // <- should I do something here?
>> dcontact >> delimiter[6]
>> j;
std::cout << id << ":" << ag << ":" << lid << ":" << cid << ":" << fid << ":" << did << ":";
std::cout << dcontact << "\n";
}
[出力] 、太字の部分は、stringstream が dcontact に対してのみ 4 文字の読み取りに失敗したことを示しています。実際には 4 文字以上を保持し、ガベージ データを残します。0:1:2:3:4:5:CT_6,0:-45689
dcontact
j