【问题标题】:How can I concatenate float with string?如何将浮点数与字符串连接起来?
【发布时间】:2023-03-30 15:00:02
【问题描述】:

我试过了:

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

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

【问题讨论】:

  • if 语句在添加x 和添加s 之间进行选择。
  • 描述"doesn't work"
  • 虽然不是float,但可以使用相同的技术:stackoverflow.com/questions/10516196/…
  • Visual Studio 崩溃了
  • 创建一个最小的例子,10行代码,编译和崩溃。把它贴出来让我们试试。

标签: c++ concatenation


【解决方案1】:

为什么在两者之间使用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?

【讨论】:

  • 我想检查其中一个是否为NULL
  • @user2116010 NULL 是什么意思?等于0?长度为零?
  • x 不能是NULL,最多是0.0f。而且 s 也不能是 NULL,因为它在堆栈中。
  • ostringstream 有一个str 成员,返回一个string 有一个c_str 成员。
  • 我不知道它是否正确,但有一次我只是让 s = NULL,现在我想测试它是否为 null
【解决方案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

【讨论】:

    【解决方案3】:

    应该这样做

    ostringstream myString;
    float x;
    string s;
    if ( x != 0)
      myString << x;
    myString << " " << s;
    return myString.str();
    

    【讨论】:

      【解决方案4】:
      ostringstream myString;
      float x;
      string s;
      myString<<x << " " <<s;
      return myString.str();
      

      【讨论】:

        【解决方案5】:

        或使用 boost::lexical_cast:

        return boost::lexical_cast<string>(x) + " " + s;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-01-24
          • 2011-05-13
          • 1970-01-01
          • 1970-01-01
          • 2015-10-06
          • 2020-07-31
          • 2016-05-07
          相关资源
          最近更新 更多