[英]c++ coverting user input double into string with decimal
嗨,大家好,我正在尝试将用户输入的double转换为字符串并与其他字符串连接,但是double后面不包含.00。 例如,如果我输入72.98,则它正确地打印出72.98,但是当我输入72.00时,它仅打印出72,不带.00。 我如何确保.00在那里。
string desc, date;
double amount;
.
.
.
cout << "Enter expenses amount: ";
cin >> amount;
//print to see the amount
cout << amount << endl;
.
.
.
string amt;
amt = static_cast<ostringstream*>( &(ostringstream() << amount) )->str();
string input = desc + ":" + amt + ":" + date;
我已经尝试过下面的代码,但不能正常工作,它给出了一些有趣的数字
stringstream amtstr;
amtstr << setprecision(2) << fixed << amount;
cout << amtstr << endl;;
您的stringstream方法有效。 您写时根本不打印其内容
cout << amtstr << endl;
相反,此代码将打印stringsteam对象本身 。 它的定义是从对象上打印地址 ,而不是字符串内容。
您可以使用str()
成员函数访问字符串内容,例如:
cout << amtstr.str() << endl;
观看此现场演示 。
您的编译器是否支持std :: to_string ?
auto input = std::to_string(myDouble);
if (input.find(".") == std::string::npos) {
input += ".00";
}
else {
input = input.substr(0, input.find(".") + 3);
}
您可以使用良好的旧C样式格式。
char szBuffer[64];
sprintf(szBuffer, "%.2f", amount);
std::string amt = szBuffer;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.