使用std::stringstream
. 它operator <<
为所有内置类型重载。
#include <sstream>
std::stringstream s;
s << "(" << c1 << "," << c2 << ")";
storedCorrect[count] = s.str();
这就像您期望的那样工作 - 与您使用std::cout
. 您只是“打印”到一个字符串。内部负责operator <<
确保有足够的空间并进行任何必要的转换(例如,double
到string
)。
此外,如果您有可用的 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 库的一个关键优势是您可以同样轻松地使用其他方式(例如, string
to )。double
不再使用atof()
orstrtod()
和原始 C 风格的字符串。