0

试图将字符串分成几部分。格式永远是这样的name from number on date

需要拆分name, number, 和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但我很好奇是什么原因造成的,因为其他两个正在工作。

4

1 回答 1

4

我认为您假设s.substr接受开始/结束索引。

这实际上是: s.substr(pos, size)

pos第一个字符的位置以包含子字符串的
大小长度

所以,以一种丑陋的方式:

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