Char数据类型和while循环

Char data type and while loop

本文关键字:循环 while 数据类型 Char      更新时间:2023-10-16
#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只包含一个字符。然而,当我在while循环中插入cin << txt时,它突然可以使用多个字符。char现在怎么可能突然存储多个字符?有人能提供一个链接,我可以阅读更多关于这个?

Char不能接受多个值。你的while循环逻辑使它看起来,它接受多个值作为输入,然后返回作为输出。假设类似的输入是:hello。所以执行就像这样

  • char变量将h作为输入,然后h作为输出。

  • 后接e &直到……,然后while循环停止。

所以实际上它连续做一个字符的输入一个字符的输出这让你看起来像一个字符串

如果你想看到详细的工作,那么使用调试工具来理解或在输入,输出之间插入延迟&下一个迭代。

这里发生的事情是,当您输入字符时,您只输入一个字符,但字符串中的所有其他字符都留在缓冲区中。如果您更改:

cout << txt;

cout << txt << 'n';

则打印该字符,然后是换行符。您将看到每行上的单个字符。

希望有帮助!

char = char 1只保存c++中最小的数据类型bool的字节。

在你的例子中:你输入一个文本而不是一个单一的字符,所以实际上这个文本被缓冲在cin的缓冲区中,然后刷新为txt。TXT是一个字符,所以它把第一个字符赋给它。但是缓冲区仍然包含其他字符,只要您处于无限条件循环中,cin将第二个字符分配给TXT,而不是前一个字符,直到最后一个字符。

来获取我所说的将cout从内部循环中移除并将其置于外部:

char txt;

cout << "Enter text (Enter '.' to quit)";
while ( txt != '.')
    cin >> txt;
cout << txt; // you'll get only the last character '.'

的原因:

假设你输入:"Hello。"它等于:

cin>>txt; // H
cin>>txt; // e
cin>>txt; // l
cin>>txt; // l
cin>>txt; // o
cin>>txt; // .

现在文本文件被赋值为'。