如何迭代在不知道其大小的情况下读取的字符串?
How to iterate a string in which was read without knowing its size?
char s[] = ""
是否建议在不知道字符串大小的情况下读取字符串?
char s[] = "";
cin >> s;
cout << s[2]; // this is working
int k = 2;
cout << s[k]; // while this does not
有什么想法吗?
您正在创建一个长度为 1 的char
数组,其中包含字符' '
。如果cin
向s
写入空字符串以外的任何内容,它将溢出数组的边界,导致未定义的行为。不要将cin
与数组一起使用;请改用string
。
string s;
cin >> s;
然后,您必须检查您使用的字符索引是否在边界内,否则您将再次获得未定义的行为。
if (k < s.size()) {
cout << s[k];
}
所以不,在不知道数组大小的情况下访问数组(或string
)是不安全的。
's' 是一个 1 个字符的数组。当您从 cin 读取时,超出第一个字符的任何内容都会写入超出分配的 's' 大小,这会导致未定义的行为。很可能"超越"部分实际上在"k"中,这将适用于第一个 cout,但在为 2 个 cout 初始化 k 后失败。
相关文章:
- 有没有办法在不使用 getline() 的情况下从.csv文件中读取?
- 在没有密钥的情况下读取密文的剩余噪声预算
- 在 c++ 中连接字符串和整数,以便在 C++ 11 不支持计算机的情况下读取多个文件
- 如何在不知道大小的情况下读取文本文件并存储到数组中
- 在不使用getline的情况下读取C 中的stdin
- 如何迭代在不知道其大小的情况下读取的字符串?
- 在不知道矩阵名称的情况下读取YML
- 我可以在不知道文本文件的列数的情况下读取二维数组中的文件吗?
- C++在不使用字符串流的情况下读取具有任意长度和格式的行的多行文件
- Windows:如何让子进程在不关闭输入匿名管道的情况下读取它
- 如何在不显示十六进制的情况下读取dat文件中的文本?C++
- 有没有办法在不加载的情况下读取 .so 文件的内容
- 如果我在键不存在的情况下读取地图的值,会发生什么情况?
- 如何在不按ENTER和不使用getch()或getche()的情况下读取C++中的字符
- 在不使用临时文件的情况下读取linux命令的输出
- 是否可以在没有安装 Office Excel 或其他先决条件框架的情况下读取 Qt 或 C++ Excel
- 我想在写入过程完成后从二进制文件中读取数据,也可以在没有写入过程的情况下读取数据
- 在未按enter确认的情况下读取组合
- 如何在没有换行符的情况下读取CSV记录"rn"?
- 如何在不知道一行文本有多少元素的情况下读取每个元素?(c++)