我已将字符数组的大小设置为2个字节。但是它可以容纳2个以上的字节。怎么可能?
#include<iostream>
int main() {
char a[2];
std::cout << "enter the name" << std::endl;
std::cin >> a;
std::cout << "the name is " << a << std::endl;
system("pause");
return 0;
}
我期待其他一些输出 但输出是.....
输入名称 佐美 名字叫萨米(Sami)
答案 0 :(得分:3)
发生的事情是,您实际上在超出分配的内存末尾进行写入。
C ++不会检查提供的输入是否适合变量a
,因此您实际上是在写出分配给程序的内存范围之外,结果是Undefined Behaviour。
您的程序似乎可以运行,但是实际上不能保证它会按您的意愿运行。
答案 1 :(得分:0)
不要使用固定大小的char数组,而应使用std::string
。
这是一个固定的代码示例。
#include<iostream>
#include<string>
int main() {
std::string a;
std::cout << "enter the name" << std::endl;
std::getline(std::cin, a);
std::cout << "the name is " << a << std::endl;
system("pause");
return 0;
}