私はこれを試しました:
ostringstream myString;
float x;
string s;
if(x)
myString<<x;
else
myString<<s;
return myString.str();
しかし、うまくいきません。私の目標は、それらのいずれかが NULL であるかどうかをテストする前に、myString、float、および文字列の間にスペースを入れて連結することです。
私はこれを試しました:
ostringstream myString;
float x;
string s;
if(x)
myString<<x;
else
myString<<s;
return myString.str();
しかし、うまくいきません。私の目標は、それらのいずれかが NULL であるかどうかをテストする前に、myString、float、および文字列の間にスペースを入れて連結することです。
なぜelse
中間?これを試して:
ostringstream myString;
float x;
string s;
if (fabsf(x) > 1e-30){
myString<<x << " ";
}
if(s.length() > 0)
myString<<s;
return myString.str(); //does ostringstream has a str()-member?
C++11 が出ました。Visual Studio はそれを適切にサポートしており、現在 std::to_string(float) を備えています。文字列に変換した後、+
演算子で連結するだけです。
string a = "test";
float b = 3.14f;
string result = a + std::to_string(b);
http://en.cppreference.com/w/cpp/string/basic_string/to_string
また、文字列から数値型に変換するためのグローバル関数の st_ ファミリが存在することを喜んでいるかもしれません: http://en.cppreference.com/w/cpp/string/basic_string/stol
ostringstream myString;
float x;
string s;
myString<<x << " " <<s;
return myString.str();
または boost::lexical_cast: を使用します。
return boost::lexical_cast<string>(x) + " " + s;
これでできるはず
ostringstream myString;
float x;
string s;
if ( x != 0)
myString << x;
myString << " " << s;
return myString.str();