C++ STL 函数 substr(pos,n) 的第一个参数 pos 据说具有这种行为。
“如果传递的位置超过了字符串的末尾,则会引发 out_of_range 异常。”
但是,如果我做类似的事情
string s("ab");
cout<<s.substr(2,666)<<endl;
那么即使 pos=2 根据定义超过了字符串的末尾,也不会引发异常。
string::end 将“字符串中最后一个字符之后”的位置定义为“字符串末尾之后”。我注意到返回的字符总是'\0'。我的问题是这是否是标准行为,我是否可以指望在这种情况下返回一个空字符串。谢谢你。