cin.get()函数如何工作?

问题描述 投票:0回答:4

我想如何使用cin.get()函数?

例如,我有256个字符的char数组。如果输入包含少于256个字符,那么包含的“空”数组元素是什么?是每个未使用的元素都是'\ 0'还是什么?

谢谢,贾尼斯

c++ arrays cin
4个回答
1
投票
char str[256]; // Uninitialized variable std::cin.get(str, 256);

结果:

相同的代码,但具有初始化的变量:

char str[256] = {}; // Initialized variable std::cin.get(str, 256);

结果:


0
投票
anything。

0
投票
cin.get(array, size)

然后它将在数组中最多填充size - 1个字符。其余的保留不变,因此您不知道它们的值。


0
投票
如果输入包含少于256个字符,那么包含什么“空”数组元素呢?是每个未使用的元素都是'\ 0'还是什么?
取决于。

全局和静态变量是默认初始化的。局部变量未初始化-除非您显式初始化它们。

char buf1[256]; // global variable, all zeroes int main() { char buf2[256]; // uninitialized memory }

buf1读取具有明确定义的行为,但从buf2进行读取则没有明确的行为,因此,如果std::cin.get(buf2, <some_size>);并从\0放入数组的std::cin.get()之外的内存中读取,则程序将具有[ C0]。

为了对此进行修改,您也可以默认初始化局部变量:

undefined behavior

© www.soinside.com 2019 - 2024. All rights reserved.