3

私はこれを試しました:

ostringstream myString;
float x;
string s;
if(x)
  myString<<x;
else
  myString<<s;
return myString.str();

しかし、うまくいきません。私の目標は、それらのいずれかが NULL であるかどうかをテストする前に、myString、float、および文字列の間にスペースを入れて連結することです。

4

5 に答える 5

3

なぜ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?
于 2013-03-13T12:30:41.680 に答える
2

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

于 2015-06-18T13:50:35.637 に答える
0
ostringstream myString;
float x;
string s;
myString<<x << " " <<s;
return myString.str();
于 2013-03-13T12:31:32.240 に答える
0

または boost::lexical_cast: を使用します。

return boost::lexical_cast<string>(x) + " " + s;
于 2013-03-14T15:34:51.623 に答える
0

これでできるはず

ostringstream myString;
float x;
string s;
if ( x != 0)
  myString << x;
myString << " " << s;
return myString.str();
于 2013-03-13T12:31:25.337 に答える