gpt4 book ai didi

c++ - 在之前使用 cin 后,cin 没有读取任何值

转载 作者:行者123 更新时间:2023-11-28 04:45:00 31 4
gpt4 key购买 nike

我刚开始阅读 C++ 11 入门书,目前在 if 语句部分。我以前有使用 Java 的经验,但 C++ 输入/输出确实让我感到困惑。为了方便起见,我将多个练习放在一个文件中。但是,似乎自从我调用了 while (cin >> p) 之后,它就搞砸了我对其正下方问题的输入。

我使用 repel.it 作为我的 C++ 代码平台,因此我使用定界符 (!) 作为我输入的 UNKOWN # OF INPUTS Section 1.4.3 问题的文件结尾。

问题出现在第 1.4.4 节,这一行:if (std::cin >> currVal) {。它不等待输入,而是将其视为无输入并跳过 if 语句。我尝试将 std::cin >> currVal 移出 if 语句,但无济于事(仍然无法读取)。

这是我的“程序”的输入/输出示例:

3825
10
9
8
7
6
5
4
3
2
1
Enter 2 Numbers:
6 9
6
7
8
9
0
3825
10
9
8
7
6
5
4
3
2
1
Enter as many numbers as you wish
5 4 3 2 1 5!
20

这是我的代码:

#include <iostream>

int main() {
//WHILE LOOPS Section 1.4.1
//Exercise 1.9
int sum = 0, i = 50;
while (i <= 100) {
sum += i;
i++;
}
std::cout << sum << std::endl;
//Exercise 1.10
int j = 10;
while (j > 0) {
std::cout << j << std::endl;
j--;
}
//Exercise 1.11
int k, l;
std::cout << "Enter 2 Numbers: " << std::endl;
std::cin >> k >> l;
while (k <= l) {
std::cout << k << std::endl;
k++;
}
//FOR LOOPS Section 1.4.2
//Exercise 1.12
int sum1 = 0;
for (int m = -100; m <= 100; ++m) {
sum1 += m;
}
std::cout << sum1 << std::endl;
//Exercise 1.13
int sum2 = 0;
for (int n = 50; n <= 100; n++) {
sum2 += n;
}
std::cout << sum2 << std::endl;
for (int o = 10; o > 0; o--) {
std::cout << o << std::endl;
}
//UNKOWN # OF INPUTS Section 1.4.3
//Exercise 1.16
std::cout << "Enter as many numbers as you wish" << std::endl;
int sum3 = 0, p = 0;
while (std::cin >> p) {
sum3 += p;
}
std::cout << sum3;
//If Statement Section 1.4.4
int currVal = 0, val = 0;
if (std::cin >> currVal) {
int cnt = 1;
while (std::cin >> val) {
if (val == currVal) {
cnt++;
} else {
std::cout << currVal << " has occured " << cnt << " times." << std::endl;
cnt = 0;
}
}
std::cout << currVal << " has occured " << cnt << " times." << std::endl;
}
return 0;
}

最佳答案

尝试自己实现循环退出。 IE。替换

  int sum3 = 0, p = 0;

[...]

while (std::cin >> p) {
sum3 += p;
}

通过

  int sum3 = 0, p_;
string p;

[...]

while (std::cin >> p) {


if ( p == "exit" )
break;

stringstream convert(p);

if ( convert >> p_ )
sum3 += atof(p_);

else
std::cout << "Invalid number supplied!" << std::endl;
}

现在您只需键入“exit”并将其作为数字发送,而不是发送一些可能会“中断”的 EOF 字符 std::cin并将其设置为失败。

确保你也#include <sstream>这样 stringstream可以进行字符串到整数的转换。

关于c++ - 在之前使用 cin 后,cin 没有读取任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49418738/

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