std::to_string() 与 static_cast<std::string>() 有何不同?

问题描述 投票:0回答:1

在 LearnCpp.com 上时,我偶然发现了一个名为

std::to_string()
的函数,但教程并没有真正详细说明它与
static_cast<std::string>()
到底有何不同,所以现在我很困惑。

另外,

std::string
一种类型,对吧?

我尝试使用它们并得到编译器错误:

'static_cast': cannot convert from 'char' to 'std::string'
#include <iostream>
#include <string>

int main()
{
    char x{ 'a' };

    std::cout << std::to_string(x) << "\n";
    std::cout << static_cast<std::string>(x) << "\n";
    return 0;
}
c++
1个回答
2
投票

std::to_string
是标准库中的一个函数。它有许多针对不同参数类型的重载,所有参数类型都返回
std::string
。我建议与
char
一起使用时要小心。它可能不会达到您的预期。

另一方面,

static_cast
不是一个函数,它是一个语言特性。它尝试进行静态强制转换。没有从
char
std::string
的转换,因此
static_cast<std::string>(x)
是一个错误。

没有理由期望两人做同样的事情。

© www.soinside.com 2019 - 2024. All rights reserved.