使用static_cast <datatype>将float转换为字符串c ++ </datatype>

时间:2014-01-17 19:00:31

标签: c++ casting static-cast

所以这是我使用static_cast进行的第一次“测试”,我从来没有这样做过,所以请耐心等待我(我是c ++的新手,3天前说过)

// ConsoleApplication3.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream"
#include "string"


int main()
{
    float value = 2.5f;
    int temp;
    std::cout << value;
    std::cout << static_cast<std::string>(value) ;
    std::cin.get();
}

它出错了

  

错误C2440:'static_cast':无法从'float'转换为   '的std :: string'

     

IntelliSense:没有合适的构造函数可以从“float”转换   到“std :: basic_string,   的std ::分配器&gt;“中

我错过了什么吗?

4 个答案:

答案 0 :(得分:3)

static_cast用于在彼此之间安全地转换可转换类型,这意味着共享相同基类的类型或在彼此之间定义转换运算符的类型。虽然std::string可能会定义一个接收float(不确定)的构造函数,但它不能从float转换。

答案 1 :(得分:2)

static_cast不能以这种方式使用。 static_cast用于强制转换 - 换句话说,假装(在某种程度上)传入的内容实际上是其他东西。您需要做的是转换

您无需将float转换为cout - 只需:

std::cout << value;

如果您确实需要转换,那么有很多选择:

  1. std::to_string(C ++ 11)
  2. std::stringsgtream
  3. boost::lexical_cast
  4. 只是少数。

答案 2 :(得分:1)

您尝试实现的不是强制转换,而是将浮点数转换为字符串。有几种方法可以做到这一点。

这很好地解释了static_cast:Regular cast vs. static_cast vs. dynamic_cast

这解释了如何将实数转换为字符串:How do I convert a double into a string in C++?

这是每个人都应该阅读的关于c ++中各种演员的答案:When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used?

答案 3 :(得分:1)

static_cast用于将一种类型转换为其他可转换类型。未定义从floatstd::string的转换。

但是,获取值的字符串表示形式的方法是调用函数std::to_string()

int main()
{
    float val = 10.0f;

    std::string str = std::to_string( val );
}

但是输出流也被分配以用于非字符串类型。所以只需将浮动放入流中:

std::cout << val;
  

10.0