char arr[100];
cin.get(arr,100);
cin.get(arr,99)
?答案 0 :(得分:2)
您可以找到here两个问题的答案,但要重申:
get
方法最多可读取n - 1
个字符。这意味着该方法需要缓冲区的大小而不是要读取的字符数。此方法会自动在结尾添加空字符。
新行字符不提取或存储在数组中。
您可能还想考虑使用可以与std::string
一起使用的std::getline
。
答案 1 :(得分:1)
1)这是安全的。我的意思是附加空字符 在末尾。即使我输入超过100个字符。或者它必须是cin.get(arr,99)。
取自here。
您使用的get
签名如下所示:
basic_istream& get( char_type* s, std::streamsize count );
它将从流中读取最多count - 1
个字符(在您的情况下为99)或直到分隔字符(默认为\n
)。因此,如果您输入的字符超过100个,则对get
的调用将读取其中的99个字符,然后在末尾添加空终结符\0
。
2)当我输入ENTER时,换行符也会被传递。那么这个角色是否真的是阵列的一部分。
不,get
读取分隔字符,因此如果按ENTER键,\n
将留在流中作为要读取的下一个字符。
建议:
请使用我链接到的网站以了解这些功能的工作原理,如果您使用C ++进行编码,请选择std::string
和std::getline
。