C ++ 11。是否可以这样做:string foo = cout<< (.00000023)*(。00000023)<< ENDL; - 精确

时间:2017-01-04 22:04:27

标签: c++ string c++11 variable-assignment

我想保存

的输出
  std::cout << endl << std::setprecision(20) << std::fixed;
  cout << ((.0000023)*(.00000023))<< endl; 

这是:0.00000000000052900000

- 一个字符串变量。

3 个答案:

答案 0 :(得分:3)

您可以使用std::ostringstream

将其拆分为多个步骤
std::ostringstream output;
output << << endl << std::setprecision(20) << std::fixed;
output << ((.0000023)*(.00000023))<< endl;
std::string result_string = output.str();

答案 1 :(得分:0)

我建议尝试std :: ostringstream:

std::ostringstream oss;
oss << ...;
std::string result(oss.str());

请注意,某些平台/编译器的速度很慢。

答案 2 :(得分:0)

请参阅std::stringstream以流式传输字符串。

#include <string>
#include <sstream>
int main()
{
    std::ostringstream stream;
    stream << 10 + 10;
    std::string result = stream.str(); // result contains "20"
    return 0;
}

编辑:字符串操纵符与std::ostringstream一起使用std::cout

stream << std::fixed << (1.0 / 100.0); // result will contain "0.010000"