此代码在首次用户输入后将不起作用
this code will not work after first user input
#include <iostream>
using namespace std;
int main()
{
double propValue, //Property Value
name, //Full Name
assessment, //Assessment
srAssessment, //Sr Assessment
taxRate, //Tax rate
annualPropTax; //Annual Property tax
const double EXEMPT = 5000, //shows the total after exemption
QUARTER = 4, //represents the amount of quarters in year
TAXPERHUNDRED = 0.01, //represents tax rate for every $100
SIXTYPERCENT = 0.6; //Represents the tax based on 60% of original value
//Gets name from user
cout << "Please enter your full name: ";
cin >> name;
//gets property value from user
cout << "Enter the actual value of the property: ";
cin >> propValue;
//Gets tax rate
cout << "Enter the tax rate for each $100 of assessed value: ";
cin >> taxRate;
}
我认为我在这里做错了什么,但我无法弄清楚。 我对C++和整个编程都是新手。 当我运行此代码时,它不允许我在"name"变量之后输入任何内容,它只显示我的所有输出
首先,名称应该是字符串或字符数组,您定义为 C 样式的方式是:
using namespace std;
maxNumOfCharacters = 10
char name[maxNumofCharacters];
然后,输入字符的方式如下:
#include <iostream>
cin.getline(name, maxNumofCharacters);
cout << "Name:" << name << "n";
你也可以将名称定义为字符串,你可以包括字符串库:
#include <string>
string name;
如果使用字符串库,则提取方式是使用 stringstream() 命令。
cout << "Enter Name:";
getline(cin, name);
希望这有帮助。
编辑:我找到了本教程并添加了此链接,以便您可以参考如何定义多个输入。还要检查C++中的常规变量类型。
http://www.cplusplus.com/doc/tutorial/basic_io/
如果输入无法转换为变量的类型,则来自std::cin
的输入将失败。
在你的代码中,你要求一个名字,但变量name
是double
的类型——如果你输入"acm818",开头的'a'
将无法匹配。name
中不存储任何内容(因此保持未初始化),输入不被消耗,程序继续。
(您可以通过if ( cin )
检查此条件 - 如果输入操作失败,这将失败。
然后你要求一个值,再次读入一个double
变量(propValue
)。输入队列中仍有"acm818"
在等待,因此程序不会暂停以请求新的输入,而是再次尝试将该字符串解析为double
,并且匹配再次失败。
taxRate
也一样.
即使您name
声明为正确的类型,cin >> name
也只会读取第一个空格......
因此,要读取整行输入并将其存储在字符串name
中:
std::cout << "Please enter your name:n";
std::string name;
std::getline( cin, name );
至于从输入中读取数字,我建议在C++中采用与 C 中相同的方法:读取一整行,然后在内存中解析它。错误条件以这种方式处理要容易得多:
std::cout << "Please enter a number:n";
std::string input;
std::getline( cin, input );
double number = 0.0;
try {
number = std::stod( input );
}
catch ( std::invalid_argument const & ex ) {
// input was not a number, do something about it
}
上面的代码需要包含<string>
和<stdexcept>
。
在C++中读取字符串的方法是使用cin.getline
char name[32];
std::cout << "Enter the namen";
std::cin.getline(name, 32);
另外,name
应该是char[]
而不是double
。
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- Windows.h 输入在函数之外不起作用
- 为什么给定的代码不适用于所有测试用例?为什么当输入为 7786 时它不起作用?
- 如果我更改函数输入,我的递归不起作用?
- 为什么用于获取有关名称的输入的语法不起作用?
- C++ 对象数组字符串输入在控制台上不起作用
- cin.fail 在输入数字和字母时不起作用
- 为什么当我输入字符时,这个特定的 cin.get() 语句在C++中不起作用?
- 特殊键输入不起作用(输入,backspace,tab等)
- 类中的重载函数(Students())是输出输入的信息,但它不起作用
- 为什么在参数输入之前将计算放置在代码中时,计算不起作用
- 使用系统命令时发送输入不起作用
- 检查用户输入是否正确的函数不起作用
- 功能调用不起作用,但控制台仍允许输入
- std :: getline(输入,d.info)不起作用
- 斯坎f 输入不起作用
- 文件结束输入不起作用
- 当我输入"..."时,用户输入不起作用
- 键盘输入不起作用,单击鼠标时工作
- Qt 调试器输入不起作用