将数字从字符串流转换为具有设置精度的字符串
Convert a number from stringstream to string with a set precision
我想从字符串流中获得一个数字,并将其设置为5位有效数字。我该怎么做?到目前为止,这就是我设法想出的:
double a = 34.34566535
std::stringstream precisionValue;
precisionValue.precision(6) << a << std::endl;
然而,这不是编译。谢谢
它不编译,因为ios_base::precision()
返回streamsize
(它是一个整型)。
您可以使用流操纵器:
precisionValue << std::setprecision(6) << a << std::endl;
您需要包括<iomanip>
。
std::stringstream::precision()
返回一个streamsize
,而不是对流本身的引用,如果要对<<
运算符进行排序,这是必需的。这应该有效:
double a = 34.34566535;
std::stringstream precisionValue;
precisionValue.precision(6);
precisionValue << a << std::endl;
precision
成员函数返回当前精度,而不是对字符串流的引用,因此您无法像在代码段中所做的那样链接调用。
precisionValue.precision(6);
precisionValue << a;
std::cout << precisionValue.str() << std::endl;
或者使用setprecision
IO操纵器来链接调用:
precisionValue << setprecision(6) << a;
std::cout << precisionValue.str() << std::endl;
您可以从标题<iomanip>
使用std::setprecision
#include <string>
#include <sstream>
#include <iomanip>
#include <iostream>
int main()
{
double a = 34.34566535;
std::stringstream precisionValue;
precisionValue << std::setprecision(6);
precisionValue << a << std::endl;
std::cout << precisionValue.str();
}
相关文章:
- C++ 命名参数习惯用语 - 未设置字符串属性
- 如何将字符串属性设置为 QTreeWidgetItem?
- 我如何处理有关输入的字符串大小超过字符数组设置大小的错误?
- C++如何将字符串数组中的一个点设置为枚举变量
- 从C++为字符串函数设置_ENV
- 在给定字符串上使用 tolower() 和 isalpha() 并将其输出设置为另一个字符串
- 通过比较字符设置字符串时出现问题
- 如何在 c++ 中从字符串向量设置类对象
- STD ::设置带有字符串键和潜在效率损失
- 如何调用 GetAltMonthNames 来填充外部区域设置月份字符串的安全数组
- 设置可变值通过字符串引用它
- 仅使用 getName 在主函数中设置字符串名称
- 如何将变量名设置为字符串?C++
- 在类中设置Arduino字符串值
- 如何在C++中有条件地设置 C 样式字符串?
- 在字符串列表中查找字符串,然后将字符串设置为找到的字符串?
- 从函数参数常量字符串 (&) 设置值
- 在定义过程中将std::string设置为0与将std::字符串设置为0相比
- 将字符串设置为日期格式
- 如何将包含空格的字符串设置为HTML文本字段(在表单中)的默认值