C++字符串substr函数的索引问题

mot*_*iur 0 c++ string

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

string s = "0123456789";

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

cout<<s.substr(4,7)<<endl;
Run Code Online (Sandbox Code Playgroud)

上面代码行的输出非常出乎意料,s.substr(0,4)给了我"0123",s.substr(4,7)给了我"456789".它只期待"456".我在这里遗漏了什么,并且在C++中有替代substr函数的方法,在第二次调用时只给出"456".

Dan*_*her 5

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