Char数据类型和while循环

时间:2016-10-06 00:14:22

标签: c++ loops while-loop char character

#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现在可以突然存储多个角色怎么可能?有人可以提供一个链接,我可以阅读更多相关信息吗?

3 个答案:

答案 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分配了'。'这是最后一个输入字符