0

可能重复:
C++ string.substr() 函数问题

string s = "0123456789";

cout<<s.substr(0,4)<<endl;

cout<<s.substr(4,7)<<endl;

上述代码行的输出非常出乎意料,s.substr(0,4) 给了我“0123”,s.substr(4,7) 给了我“456789”。它只期望 "456" 。我在这里遗漏了什么吗,是否有任何替代 C++ 中的 substr 函数的方法,这在第二次调用时只会给我“456”。

4

3 回答 3

5

的第二个参数substr是所需子字符串的长度,而不是结束索引。所以不是s.substr(4,7),你想要s.substr(4,3)

于 2012-10-22T14:38:34.427 回答
2

substr采用初始位置和所需长度 - 请参见此处

试试substr(4,3)

于 2012-10-22T14:39:12.367 回答
2

的第二个参数substr是符号数,而不是您假设的结束索引。你应该使用substr(4,3).

于 2012-10-22T14:39:16.693 回答