我不明白这个子字符串行为。相当微不足道,但它让我难以置信

I do not understand this substring behavior . Rather trivial but it boggles my mind

提问人:Carrot13 提问时间:10/12/2023 最后编辑:Remy LebeauCarrot13 更新时间:10/13/2023 访问量:70

问:

string A = "LOLWUT";

cout << A.substr(0, A.length() - 1) << endl;
cout << A.substr(1, A.length() - 1) << endl;

此代码打印:

LOLWU
OLWUT

根据我的理解,它应该是:

LOLWU
OLWU

为什么?我错过了什么?这是我今天在工作中遇到的一件简单的事情,我可以解决它,但我想理解它。

我的 g++ 版本:

g++ (MinGW-W64 x86_64-ucrt-posix-she,由 Brecht Sanders 构建)13.1.0

C++ stdstring

评论

2赞 Philip Adler 10/12/2023
出于好奇,是什么资源使您得出了您所说的结论?

答:

8赞 X Goodrich 10/12/2023 #1

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

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

string substr (size_t pos = 0, size_t len = npos) const;

评论

1赞 Carrot13 10/12/2023
啊,谢谢!我缺少的就是这个小细节!非常感谢你,朋友!
4赞 HolyBlackCat 10/13/2023
@Carrot13 如果这回答了您的问题,您应该按答案旁边的复选标记。
0赞 X Goodrich 10/14/2023
不同的语言,在某些情况下,不同的库有不同的子字符串第二个参数;很容易把你的记忆误认为ARG是什么。因此,如果它们的名称含糊不清,请帮助您。
0赞 Carrot13 10/20/2023
感谢您的所有输入。是的,我应该更仔细地进行 RFTM。我完全错过了那个小细节,它就在我身上。感谢您帮助我学习。