#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 ++的新手,也是整个编程的新手。当我运行这段代码时,它不会让我在“名称”变量之后输入任何内容,它只显示我的所有输出
答案 0 :(得分:3)
首先,名称应该是字符串或字符数组,并且您定义为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 ++中的常规变量类型。答案 1 :(得分:2)
如果无法将输入转换为变量类型,则来自std::cin
的输入将失败。
在您的代码中,您要求输入名称,但变量name
的类型为double
- 如果您输入&#34; acm818&#34;,'a'
at开始将无法匹配。 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 ++ as I suggest in 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>
。
答案 2 :(得分:0)
在C ++中读取字符串的方法是使用cin.getline
char name[32];
std::cout << "Enter the name\n";
std::cin.getline(name, 32);
此外,name
应该是char[]
而不是double
。