> s; cout > s; 然后,您必须检查您使用的字符索引是否在边界内,否则您将再次-6ren">
gpt4 book ai didi

c++ - 如何在不知道其大小的情况下迭代读取的字符串?

转载 作者:行者123 更新时间:2023-11-27 23:54:49 25 4
gpt4 key购买 nike

char s[] = "" 是否建议在不知道其大小的情况下读取字符串?

char s[] = "";
cin >> s;
cout << s[2]; // this is working
int k = 2;
cout << s[k]; // while this does not

有什么想法吗?

最佳答案

您正在创建一个长度为 1 的 char 数组,其中包含字符 '\0'。如果 cins 写入空字符串以外的任何内容,它将溢出数组的边界,导致未定义的行为。不要对数组使用 cin;请改用 string

string s;
cin >> s;

然后,您必须检查您使用的字符索引是否在边界内,否则您将再次遇到未定义的行为。

if (k < s.size()) {
cout << s[k];
}

所以不,在不知道其大小的情况下访问数组(或 string)是不安全的。

关于c++ - 如何在不知道其大小的情况下迭代读取的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43303659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com