为什么我的 cout 一次执行,尽管 cin 应该在两者之间读取?
Why is my cout executing all at once in though cin should be read inbetween?
我对C++代码很陌生,当我为任何cin
输入除数字以外的任何内容时,它会自动执行其余的cout
。
基本上,如果我想将第一个水果命名为"苹果",它将执行所有其他cout
。如果我只用数字命名它,其他cout
就可以了。
#include "stdafx.h"
#include <iostream>
using namespace std;
struct Fruit {
char Name;
double Weight;
int Calories;
};
int main(){
struct Fruit TodaysFruit;
struct Fruit FruitA;
struct Fruit FruitB;
struct Fruit FruitC;
struct Fruit FruitD;
struct Fruit FruitE;
cout << "Enter Name For Fruit" << endl;
cin >> FruitA.Name;
cout << "Enter Weight For Fruit" << endl;
cin >> FruitA.Weight;
cout << "Enter Calories for Fruit" << endl;
cin >> FruitA.Calories;
//break
cout << "Enter Name For Fruit" << endl;
cin >> FruitB.Name;
cout << "Enter Weight For Fruit" << endl;
cin >> FruitB.Weight;
cout << "Enter Calories for Fruit" << endl;
cin >> FruitB.Calories;
//break
cout << "Enter Name For Fruit" << endl;
cin >> FruitC.Name;
cout << "Enter Weight For Fruit" << endl;
cin >> FruitC.Weight;
cout << "Enter Calories for Fruit" << endl;
cin >> FruitC.Calories;
return 0;
};
如果您输入"Apple"
cin >> FruitA.Name;
然后"A"将进入结构中的单个字符Name
。
"people"将保留在输入流中,并且无法读取以下所有数字,导致输入流进入错误状态,所有后续读取都将失败(感谢Pete Becker(。
要修复,请替换
char Name;
跟
std::string Name;
您需要#include <string>
来支持这一点(信用 Ap31(。std::
(Peter 的一个很好的输入,信用(将确保使用预期的字符串,即使任何活动using
会使混淆成为可能。
相关文章:
- C++中的赋值发生,尽管右侧出现异常
- C++为什么尽管我调用了void函数,它却不起作用
- C++中的cin.ignore()函数不适用于整个流
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- C++使用数组作为多维数组,尽管将其初始化为带有指针的 1D
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- Problems with std::cin.fail()
- 尽管遵循了规则,内存泄漏在哪里
- 从类型std::函数传递变量失败,尽管调用方期望的类型完全相同
- 由cin中的字符串中未捕获空白引起的分割错误
- 在C++中使用Cin,我如何在1行中输入
- 将 cin 限制为只有一个
- cin >> int 给定一个字符串将 int 赋值为 0
- istream std::cin如何修改自定义istream缓冲区
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- C++ 将 CIN 值存储到任何类型的数组中
- 为什么我的 cout 一次执行,尽管 cin 应该在两者之间读取?
- Cin 不会暂停输入,尽管同时使用了 cin.clear() 和 cin.ignore()
- 尽管Cin.ignore(),CIN不等待输入
- "cin>>"如何取三个值,尽管它们被空格分隔?