当我在字符变量中键入多个字符时,为什么它可以工作?

时间:2014-02-24 13:07:36

标签: c++

我是一名新的C ++用户。 我的代码如下:

#include <iostream>
using namespace std;
int main()
{
   int option = 1;
   char abstract='a';
   while(option == 1){
     char temp;
     cin>> temp;
     abstract = temp;
     cout << abstract;
     option = 1;
     if(abstract == '!'){
         option = 0;
     }
  }
  return 0;
}

当我输入类似的内容时:abcdefg 所有人物都在屏幕上,为什么?这只是因为编译器?

4 个答案:

答案 0 :(得分:1)

事实上,char中一次只能存储一个字符。 cin>>temp;一次读取一个字符,因为更多字符不适合那里。循环只是读取并打印另一个字符。

作为可视化提示,尝试使用cout<<abstract<<endl;回显您的角色。每行/每次迭代都会看到一个字符。

答案 1 :(得分:1)

您的终端不限制输入的字符数,这就是您可以根据需要输入多少字符的原因。您的c ++编译器只会读取其中一个字符,因为'temp'的类型为char。您可以输入'if'语句来检查在终端中输入的字符数

答案 2 :(得分:0)

由于while循环,它依次处理每个字符。不确定你预期会发生什么。

使用分隔符打印出来,看每次迭代打印的字符数不会超过一个:

cout << "'" << abstract << "'";

答案 3 :(得分:0)

终端窗口本身负责读取字符并将它们回显到屏幕上。你的C ++程序要求终端输入字符,至少在这种程序中,对这些字符的显示方式没有影响。