提问人:Carrot13 提问时间:10/12/2023 最后编辑:Remy LebeauCarrot13 更新时间:10/13/2023 访问量:70
我不明白这个子字符串行为。相当微不足道,但它让我难以置信
I do not understand this substring behavior . Rather trivial but it boggles my mind
问:
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
答:
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。我完全错过了那个小细节,它就在我身上。感谢您帮助我学习。
评论