Har*_*ish 4 c++ arrays cin c++11 c++17
在声明一个字符数组之后,例如char s[20],最终使用cin.getline(s,100)将数组的大小更改为 100 来获取输入,更改(完全)更改为作为输入输入的字符数,还是根本不更改?我最初声明的数组大小会发生什么变化?
char s[20]
cin.getline(s,100)
我是编程新手,因此您的简单解释将不胜感激。谢谢!
bhr*_*tov 6
大小不会改变发生的情况是您正在写入超过缓冲区大小。如果您通过缓冲区写入足够远,最终将导致缓冲区溢出。
您应该尽可能使用std::vector而不是 c 样式数组。
std::vector
正如 Ted Lyngmo 评论的那样,在这种情况下std::string,使用比 std::vector 或 c 样式数组更好:
std::string
std::string input; std::getline(std::cin, input);
归档时间:
5 年,4 月 前
查看次数:
170 次
最近记录: