string degreesToDMS(double angle) {
int intpart = 0;
int intpart2 = 0;
int intpart3 = 0;
return floor(angle) << "\xb0" << modf(angle, &intpart)*60 << "'" << modf(modf(angle, &intpart2), &intpart3)*60 << "\"";
}
此功能以度为单位,输出纬度。
我在return语句中遇到错误。如何在C ++中将不同的数据类型正确连接到字符串?
答案 0 :(得分:3)
如果你想使用流媒体运营商,那么使用std :: stringstream,如下所示: -
string degreesToDMS(double angle)
{
int intpart = 0;
int intpart2 = 0;
int intpart3 = 0;
stringstream ss;
ss << floor(angle) << "\xb0" << modf(angle, &intpart)*60 << "'" << modf(modf(angle, &intpart2), &intpart3)*60 << "\"";
return ss.str ();
}
答案 1 :(得分:2)
您需要先在std::ostringstream
中构建结果,然后从中检索字符串。
std::ostringstream ss;
ss << floor(angle) << "\xb0" << modf(angle, &intpart)*60 ...
return ss.str();
还有其他方法可以实现这一结果;例如,使用C ++ 11,您可以使用std::to_string
将值转换为std::string
,然后将它们连接在一起。
return std::to_string(floor(angle)) + "\xb0" +
std::to_string(modf(angle, &intpart)*60) + ...
答案 2 :(得分:1)
要在C ++中连接字符串,您只需在两个字符串上使用+ operator
。
如果您想将int
转换为string
,请使用stringstream
#include <string>
#include <sstream>
using namespace std;
int main()
{
string firstString = "1st, ";
string secondString = "2nd ";
string lastString = firstString + secondString;
int myNumber = 3;
std::stringstream converANumber;
converANumber << myNumber;
lastString = lastString + converANumber.str();
}
答案 3 :(得分:1)
std::string result;
result += std::to_string(floor(angle);
result += "\xb0";
result += std::to_string(modf(angle, &intpart) * 60);
return result;
请注意,这需要C ++ 11获取std::to_string
。