使用cin.get()函数

时间:2012-04-25 23:32:20

标签: c++ function get

char arr[100];
cin.get(arr,100);
  1. 这样安全吗?即使我键入超过100个字符,是否会在末尾附加空字符?或者我应该使用cin.get(arr,99)
  2. 当我输入ENTER时,是否是数组的行尾字符部分?

2 个答案:

答案 0 :(得分:2)

您可以找到here两个问题的答案,但要重申:

  1. get方法最多可读取n - 1个字符。这意味着该方法需要缓冲区的大小而不是要读取的字符数。此方法会自动在结尾添加空字符。

  2. 新行字符提取或存储在数组中。

  3. 您可能还想考虑使用可以与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::stringstd::getline