char 数组的 cin 和 cin.get() 之间的区别

新手上路,请多包涵

我有这两个代码:

 char a[256];
cin>>a;
cout<<a;

char a[256];
cin.get(a,256);cin.get();
cout<<a;

也许,相对于第二个没有 cin.get();

 char a[256];
cin.get(a,256);
cout<<a;

我的问题是(第一个):对于 char 数组,我应该使用什么? cin 还是 cin.get()?我为什么要使用 cin.get();我的 char 初始化后没有参数?

我的第二个问题是:我的 c++ 老师教我每次使用 cin.get() 初始化字符,并在每次初始化 char 数组或 int 数组或只是 int 或其他任何东西之后,再次放入 cin.get();在它之后。这就是我最初想问的。

所以,现在我得到了这两个:在这种情况下,在整数初始化之后没有 cin.get(),我的程序将中断,我不能再做我的 char 初始化。

 int n;
cin>>n;
char a[256];
cin.get(a,256); cin.get();  // with or without cin.get();?
cout<<a;

和正确的一个:

 int n;
cin>>n; cin.get();
char a[256];
cin.get(a,256); cin.get(); // again, with or without?
cout<<a;

那么,这是怎么回事?请有人解释每个案例!谢谢你。

原文由 Ruben P 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 605
1 个回答

对于 char 数组,使用 cin.get() 因为它计算空白,而 cin 不计算。更重要的是, cin.get() 设置要读取的最大字符数。例如:

  char foo[25]; //set maximum number of characters
 cout << "Please type in characters for foo" << endl;
 cin.get(foo,25);
 cout << ' ' << foo;

在这种情况下,您只能输入 24 个字符和一个空终止符 \0

我希望这能回答你的第一个问题。我个人会使用字符串。

原文由 Michael Davis 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题