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

最初に結果を に構築して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、2つの文字列でを使用するだけです。

をに変換する場合は、 stringstreamintstring使用します

#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 に答える