我不明白这个子字符串的行为。相当微不足道,但它让我困惑

-1 c++ stdstring

string A = "LOLWUT";

cout << A.substr(0, A.length() - 1) << endl;
cout << A.substr(1, A.length() - 1) << endl;
Run Code Online (Sandbox Code Playgroud)

此代码打印:

LOLWU
OLWUT
Run Code Online (Sandbox Code Playgroud)

根据我的理解,应该是:

LOLWU
OLWU
Run Code Online (Sandbox Code Playgroud)

为什么?我缺少什么?这是我今天工作时遇到的一个简单的事情,我可以解决它,但我想理解它。

我的 g++ 版本:

g++(MinGW-W64 x86_64-ucrt-posix-seh,由布莱希特·桑德斯构建)13.1.0

小智 8

第二个参数不是停止复制的索引,而是从第一个参数开始复制的字符数。

https://cplusplus.com/reference/string/string/substr/

string substr (size_t pos = 0, size_t len = npos) const;
Run Code Online (Sandbox Code Playgroud)

  • @Carrot13如果这回答了您的问题,您应该按答案旁边的复选标记。 (4认同)