尝试将字符串拆分为多个部分。格式将始终如下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
sampe输出:name:John Smith, num: N656 on 01012013, date:01012013
因此在尝试创建子串number
时显然存在问题,但我很好奇是什么原因造成这种情况,因为其他两个正在工作。
答案 0 :(得分: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);