double转换成字符串C ++? [重复] double转换成字符串C ++? [重复](C

2019-06-14 07:20发布

可能重复:
如何转换出双入在C ++字符串?

我想一个字符串组合和双和g ++引发此错误:

main.cpp中:在函数 '诠释主()':
main.cpp中:40:错误:类型的无效操作数的常量字符[2]“和“双”为二进制“运算符+”

下面是它抛出错误代码行:

storedCorrect[count] = "("+c1+","+c2+")";

storedCorrect []是一个字符串数组,和c1和c2均为双打。 有没有一种方法,以C1和C2转换成字符串让我的程序编译正确?

Answer 1:

你不能直接这样做。 有许多方法可以做到这一点:

  1. 使用std::stringstream

     std::ostringstream s; s << "(" << c1 << ", " << c2 << ")"; storedCorrect[count] = s.str() 
  2. 使用boost::lexical_cast

     storedCorrect[count] = "(" + boost::lexical_cast<std::string>(c1) + ", " + boost::lexical_cast<std::string>(c2) + ")"; 
  3. 使用std::snprintf

     char buffer[256]; // make sure this is big enough!!! snprintf(buffer, sizeof(buffer), "(%g, %g)", c1, c2); storedCorrect[count] = buffer; 

还有一些其他的方式,利用各种双到字符串转换功能,但这些都是你会看到它做的主要途径。



Answer 2:

在C ++ 11, 使用std::to_string如果你能接受默认的格式( %f )。

storedCorrect[count]= "(" + std::to_string(c1) + ", " + std::to_string(c2) + ")";


Answer 3:

使用std::stringstream 。 它的operator <<被重载的所有内置类型。

#include <sstream>    

std::stringstream s;
s << "(" << c1 << "," << c2 << ")";
storedCorrect[count] = s.str();

这就像你所期望的-您打印到与屏幕相同的方式std::cout 。 你是简单地“打印”到一个字符串代替。 的内部operator <<照顾,确保有足够的空间和做任何必要的转换(例如, doublestring )。

另外,如果您有Boost库可用,你可能会考虑寻找到lexical_cast 。 语法看起来很像普通的C ++ - 风格的转换:

#include <string>
#include <boost/lexical_cast.hpp>
using namespace boost;

storedCorrect[count] = "(" + lexical_cast<std::string>(c1) +
                       "," + lexical_cast<std::string>(c2) + ")";

引擎盖下, boost::lexical_cast ,基本上是做我们一起做的同样的事情std::stringstream 。 使用Boost库的主要优点是,你可以去其他的方式(例如, stringdouble )一样容易。 没有更多搞乱atof()strtod()和原始C风格的字符串。



Answer 4:

std::string stringify(double x)
 {
   std::ostringstream o;
   if (!(o << x))
     throw BadConversion("stringify(double)");
   return o.str();
 }

C ++ FAQ: http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.1



Answer 5:

我相信sprintf的是适合你的功能。 我是在标准库,如printf。 按照下面以获取更多信息的链接:

http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/



文章来源: Convert double to string C++? [duplicate]