char arr[100];
cin.get(arr,100);
- Is this safe? Will the null-character be appended at the end even if I type more than 100 chars? or should I use
cin.get(arr,99)
? - When I type ENTER, is the end-of-line character part of the array or not?
您的两个问题的答案都可以在这里找到,但重申一下:
该get
方法最多读取n - 1
字符。这意味着该方法需要缓冲区的大小而不是要读取的字符数。此方法自动在末尾附加一个空字符。
换行符不会被提取或存储在数组中。
您可能还需要考虑使用std::getline
可以与std::string
.
1)这安全吗?我的意思是最后会附加空字符。即使我输入了超过 100 个字符。或者它必须是 cin.get(arr,99)。
取自这里。
您正在使用的签名get
如下所示:
basic_istream& get( char_type* s, std::streamsize count );
它将count - 1
从流中读取最多字符(在您的情况下为 99)或直到分隔字符,默认情况下为\n
. 因此,如果您键入的字符超过 100 个,则调用get
将读取其中的 99 个字符,然后\0
在末尾附加空终止符。
2)当我输入 ENTER 时,也会传递一个换行符。所以这个字符是否真的是数组的一部分。
不,get
一直读到定界字符,所以如果按 ENTER,\n
将留在流中作为下一个要读取的字符。
建议:请使用我链接到的站点以了解这些功能的工作原理,以及std::string
是否std::getline
使用 C++ 编码。