gpt4 book ai didi

c++ - 为什么我的 C++ 程序会打印一个额外的换行符?

转载 作者:太空狗 更新时间:2023-10-29 19:46:18 27 4
gpt4 key购买 nike

好吧,我已经做了好几个小时了....

//after a character is entered, library routines are used to uppercase the
letters. loops the program until "1" is entered

char letter;

while (letter != '1')
{
cout << "Enter a letter: ";
cin.get(letter);
cout << char(toupper(letter)) << '\n';
}

一切正常,但它会提示“输入一个字母:”两次...

这是一个示例输出

Enter a letter: h
H
Enter a letter:

Enter a letter: k
K
Enter a letter:

Enter a letter: a
A

我希望它看起来像这样

Enter a letter: h
H
Enter a letter: k
K
Enter a letter: a
A

你能帮忙解释一下为什么要这样做....

最佳答案

当您输入数据时,输入字母然后按 ENTER。这会将您的字母以及返回字符 (\n) 添加到流中。由于 cin.get() 不会在仍有字符要从流中提取时等待您的输入,因此它会每隔一次传递一次 \n

您可以通过添加 cin.ignore 快速解决此问题:

while (letter != '1')
{
cout << "Enter a letter: ";
cin.get(letter);
cin.ignore(256, '\n');
cout << char(toupper(letter)) << '\n';
}

另一种方法是使用 >> 运算符,因为 cin.get 一次只检索一个字符:

while (letter != '1')
{
cout << "Enter a letter: ";
cin >> letter;
cout << char(toupper(letter)) << '\n';
}

关于c++ - 为什么我的 C++ 程序会打印一个额外的换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14248544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com