1
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++ 中的字符串?

4

4 回答 4

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 ();
}
于 2012-10-03T16:35:58.433 回答
2

您需要首先在 an 中构建结果,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) + ...
于 2012-10-03T16:35:11.567 回答
1

要在 C++ 中连接一个字符串,您需要做的就是+ operator在两个字符串上使用。

如果要将 a 转换int为 astring使用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();

}
于 2012-10-03T16:34:07.843 回答
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.

于 2012-10-03T16:37:17.717 回答