3

我试过这个:

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

但它不起作用。我的目标是在测试其中一个是否为 NULL 之前连接成 myString、一个浮点数和一个字符串,它们之间有一个空格。

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

此外,您可能很高兴现在存在 sto_ 系列全局函数,用于从字符串转换回数字类型: http ://en.cppreference.com/w/cpp/string/basic_string/stol

于 2015-06-18T13:50:35.637 回答
0

这应该这样做

ostringstream myString;
float x;
string s;
if ( x != 0)
  myString << x;
myString << " " << s;
return myString.str();
于 2013-03-13T12:31:25.337 回答
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 回答