C++中数组的大小是否灵活?

Har*_*ish 4 c++ arrays cin c++11 c++17

在声明一个字符数组之后,例如char s[20],最终使用cin.getline(s,100)将数组的大小更改为 100 来获取输入,更改(完全)更改为作为输入输入的字符数,还是根本不更改?我最初声明的数组大小会发生什么变化?

我是编程新手,因此您的简单解释将不胜感激。谢谢!

bhr*_*tov 6

大小不会改变发生的情况是您正在写入超过缓冲区大小。如果您通过缓冲区写入足够远,最终将导致缓冲区溢出。

您应该尽可能使用std::vector而不是 c 样式数组。

正如 Ted Lyngmo 评论的那样,在这种情况下std::string,使用比 std::vector 或 c 样式数组更好:

std::string input;
std::getline(std::cin, input);
Run Code Online (Sandbox Code Playgroud)