【发布时间】:2020-10-20 06:31:39
【问题描述】:
我正在尝试打印字符串的子字符串,但 substr() 函数的行为对我来说似乎很奇怪。
在下面的程序中,我试图打印值为“Kamal”的字符串的子字符串。
在这里,substr(0,4) 打印“Kama”,这让我假设 0 是包容性的,而 4 是排斥性的。 但是 substr(1,4) 打印“amal”,这违反了我的上述理解,因为位置 4 的字符被打印,而在之前的情况下它不是。 你能解释一下这种奇怪的行为吗?
如果这个问题真的很愚蠢,那么这是我第一次使用 substr()。我已经搜索了网络,但似乎找不到任何有用的答案。
#include<iostream>
#include<string>
using namespace std;
int main() {
string s1 = "Kamal";
cout << s1.substr(0, 4) << '\n';
cout << s1.substr(1, 4) << '\n';
return 0;
}
【问题讨论】:
-
你的第一个数字是子字符串开始的索引,第二个数字是子字符串的长度
-
第二个参数表示count,即子串的长度。见
substr。 -
@songyuanyao 指向 Cppreference.com 的链接或 Visual Studio 上的 Interllisence 信息对于初学者来说可能会非常吓人,但是一旦你尝试通读并理解它们,它们就会变得非常简单和有帮助!
-
@sutharp777 不要使用包含lots of wrong or outdated information 的站点。 en.cppreference.com/w/cpp 由专家积极维护,更加可靠和高度更新