找不到以下问题的答案:
我是C ++的新手,现在正在做一些测试。我正在使用std :: fixed和std :: setprecision函数来获取带有5个零的十进制数。这可以使用cout起作用,但是我不知道如何将结果分配给变量,而不是使用cout打印它们。
.as-console-wrapper { max-height: 100% !important; top: 0; }
我尝试了使用sstream之类的方法,但是每当我尝试将结果分配给另一个字符串,以便我可以返回结果时,都会使编译器失败。
//Works
int fetchJD(std::string str) {
std::cout << std::fixed << std::setprecision(0) << str;
return 0;
}
哪个会导致编译器出错:
// Not working
int fetchJD(std::string str)
{
std::stringstream ss;
string temp;
ss << std::fixed << std::setprecision(0) << str;
temp = ss.str();
return temp;
}
那么我怎样才能传递std :: fixed << std :: setprecision(0)<< str;变成另一个字符串?
答案 0 :(得分:2)
您仍然需要将结果转换回int
(但这永远不会改变整数的显示方式)。
return std::stoi(ss.str());
这为您提供了int
,简单的int
,没有精度,没什么。更改精度和fixed
的所有过程都不会更改任何内容,因为开头有一个字符串,这些修饰符不会更改该字符串。
因此,基本上,您对功能不做任何事情。
如果要将字符串转换为值,请使用stoi
,stod
...
答案 1 :(得分:2)
您需要区分变量中的值,例如double somevalue = 1.0;
,并使用cout向用户显示在屏幕上。流指令setprecision和setfixed将double / float值转换为特定的 output 格式。如果要将输出转换为字符串,请使用stringstream而不是cout。
std::cout << std::fixed << std::setprecision(0) << somevalue;
vs
std::stringstream ss;
ss << std::fixed << std::setprecision(0) << somevalue;
然后您将内容包含在字符串ss.str()
中