首页 文章

C String.substr输出错误[关闭]

提问于
浏览
0

试图将一个字符串分成几部分 . 格式将始终如下 name from number on date

需要拆分 namenumberdate

码:

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

所以在尝试创建子字符串_2910671时显然存在问题,但我很好奇是什么原因造成这种情况,因为其他两个正在工作 .

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);
    

相关问题