#include<iostream>
using namespace std;
int main ()
{
char txt;
cout << "Enter text (Enter '.' to quit)";
while ( txt != '.')
{
cin >> txt;
cout << txt;
}
return 0;
}
我是C ++的初学者。在课堂上,我们被教导char
只有一个角色。但是,当我在cin << txt
循环中插入while
时,它突然可能需要多个字符。 char
现在可以突然存储多个角色怎么可能?有人可以提供一个链接,我可以阅读更多相关信息吗?
答案 0 :(得分:1)
Char不会超过一个值。你的while循环逻辑使得它看起来需要多个值作为输入,然后将其作为输出返回。 假设输入是:hello。 所以执行就像这样
char var将作为输入,然后输入h作为输出。
其次是e&amp;所以直到'。 '之后while循环将停止。
所以实际上它是连续一个字符输入一个字符输出,这使你看起来像字符串一样。
如果您想查看详细的工作情况,请使用调试工具来理解或插入输入,输出和输出之间的延迟。下一次迭代。
答案 1 :(得分:0)
这里发生的是,当您输入字符时,您只输入一个字符,但字符串中的所有其他字符都保留在缓冲区中。如果你改变:
cout << txt;
到
cout << txt << '\n';
然后它将打印字符,然后打印换行符。你看到你在每一行都得到了各自的字符。
希望这有帮助!
答案 2 :(得分:0)
char is char 1只保存字节,它是c ++中最小的数据类型bool。
在你的例子中: 你输入一个文本而不是一个char,所以实际上这个文本缓存在cin的缓冲区中,然后将其刷新到txt。 txt是一个char,所以它将第一个字符分配给它。但是缓冲区仍然包含其他字符,只要你处于无限条件循环中,cin就会将第二个字符分配给txt而不是前一个和儿子,直到las字符为止。
得到我所说的从内循环移除cout并将其移到外面:
char txt;
cout << "Enter text (Enter '.' to quit)";
while ( txt != '.')
cin >> txt;
cout << txt; // you'll get only the last character '.'
原因:
让我们说你输入:“你好。” 它等于:
cin>>txt; // H
cin>>txt; // e
cin>>txt; // l
cin>>txt; // l
cin>>txt; // o
cin>>txt; // .
现在为txt分配了'。'这是最后一个输入字符