问题描述
代码:string str(double dX, double dY)// 将向量坐标转为字符串,格式为“(x=, y=)”
{ return '(x=' + dX + ', y=' + dY + ')';}
错误信息:表达式必须包含整数或未区分范围的枚举类型
问题解答
回答1:常见的两个方案。
std::string v1(double dX, double dY) { std::ostringstream stream; stream << '(x=' << dX << ', y=' << dY << ')'; return stream.str();}std::string v2(double dX, double dY) { char buff[1024]; sprintf(buff, '(x=%f, y=%f)', dX, dY); return buff;}
v2可能会溢出。
回答2:include<string>c++11 提供std::to_string 用于字符串转换
或者如楼上所言
std::string v1(double dX, double dY) { std::ostringstream stream; stream << '(x=' << dX << ', y=' << dY << ')'; return stream.str();}
按照楼主的程序还是to_string转换效率高一些。
建议返回 const string