【发布时间】:2021-02-27 10:21:37
【问题描述】:
我正在尝试将自己的大小设置为字符串数组。 cin如何覆盖字符串的大小。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int size; cin>>size;
char str[size];
cout << "Enter a string: ";
cin>> str;
cout << "string size: " << strlen(str);
return 0;
}
输出:
5
Enter a string: hellobaby
string size: 9
【问题讨论】:
-
size是您为长度不超过size -1的字符串保留的大小。size可能是 1024,而”test”的长度是 4(加一表示结尾为空);其余 1019 个字符未使用。阅读以 null 结尾的字符串。 -
这有点像苹果和橘子的比较。包含以空字符结尾的字符串的数组的大小和以空字符结尾的字符串的大小是独立的、不相关的量。 (理想情况下,
string size < array size的关系成立,但不是必须的。这是在 C++14 中删除std::gets的一个重要原因。) 所以cin并没有真正覆盖任何东西的大小。或许你可以改写一下这个问题,问为什么cin不受数组大小的限制?