如何解决字符数组问题?

时间:2019-11-06 09:41:26

标签: c++

enter image description here

我已将字符数组的大小设置为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)

2 个答案:

答案 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;
}