#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
int income;
int tax;
cout << "What is your full name? ";
getline(cin,name);
cout << "What is your annual income? ";
cin >> income;
if (income < 50000)
{
tax = income*0.33;
}
else { tax = income*0.38; }
cout << "\t\t\t" << name << ": Tax Report" << endl;
cout << "\t\t\t" << "-------------------------" << endl;
cout << "Income =$" << income << endl;
cout << "Tax =$" << tax << endl;
system("pause");
return 0;
}
我希望连字符行与名称字符串的长度相匹配,而不管其长度如何。我在一个介绍性的c ++课程中,我确信有一个简单的方法可以做到这一点。有人可以帮忙吗?
答案 0 :(得分:2)
cout << "\t\t\t" << string(name.length() + 12, '-') << endl;
答案 1 :(得分:2)
只需输入此行,而不是当前的虚线
cout << "\t\t\t" << std::string(name.length(), '-') << endl;
有关详细信息,请参阅http://en.cppreference.com/w/cpp/string/basic_string/basic_string
答案 2 :(得分:0)
您可以制作一定长度的连字符串。通过首先为名称行构建一个字符串然后调用其length方法来获取长度。这是一个例子:
std::string hyphens;
hyphens.assign(length, '-');
查看thislink以获取有关使用字符串的更多详细信息: http://www.cplusplus.com/reference/string/string/
答案 3 :(得分:0)
您可以通过以下方式执行此操作
#include <iostream>
#include <iomanip>
int main()
{
std::string name( "01234567890" );
std::cout << "\t\t\t" << name << ": Tax Report" << std::endl;
std::cout << "\t\t\t" << std::setfill( '-' ) << std::setw( name.size() )
<< '-' << std::endl;
return 0;
}
程序输出
01234567890: Tax Report
-----------
如果您希望所有前面的行都加下划线,那么您需要tp将字符串“:Tax Report”的大小添加到std:;setw
的参数中。例如
#include <iostream>
#include <iomanip>
int main()
{
std::string name( "01234567890" );
std::cout << "\t\t\t" << name << ": Tax Report" << std::endl;
std::cout << "\t\t\t" << std::setfill( '-' ) << std::setw( name.size() + 12 )
<< '-' << std::endl;
return 0;
}
在这种情况下,porgram输出是
01234567890: Tax Report
-----------------------
因此,您只需要使用标题std::setfill
中声明的函数std::setw
和<iomanip>
。无需创建std::string
类型的临时对象,因为它效率低下。