0

文字列をパーツに分割しようとしています。フォーマットは常にこのようになりますname from number on date

namenumber、およびを分割する必要がありますdate

コード:

string name, number, date;

size_t from = s.find(" from ");
size_t on = s.find(" on ");

name = s.substr(0, from);
number = s.substr(from + 6, on);
date = s.substr(on + 4);

cout << "name:" << name << ", num:" << number << ", date:" << date << endl;

サンプル入力:John Smith from N656 on 01012013

サンプル出力:name:John Smith, num: N656 on 01012013, date:01012013

したがって、部分文字列を作成しようとすると明らかに問題がありますnumberが、他の2つが機能しているため、何が原因なのか非常に興味があります.

4

1 に答える 1

4

s.substr開始/終了インデックスを受け入れると仮定していると思います。

これは実際には次のとおりです。 s.substr(pos, size)

pos含める最初の文字の位置
size部分文字列の長さ

だから、醜い方法で:

name = s.substr(0, from);
number = s.substr(from + 6, on - (from + 6));
date = s.substr(on + 4);
于 2013-01-29T02:00:55.710 に答える