使用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 库的一个关键优势是您可以同样轻松地使用其他方式(例如, stringto )。double不再使用atof()orstrtod()和原始 C 风格的字符串。