为什么我们不能使用整数到字符串直接转换,但可以按位到字符串?


string binary = std::bitset<16>(15).to_string();//This cast is valid
int a=5;
string s=a.to_string()//this givees error

为什么这是无效的?to_string有什么限制吗?

int是C++中的基元类型,而不是类类型,因此,它没有定义任何成员函数,如int::to_string();。您应该尝试非成员std::string std::to_string(int),用作:string s = std::to_string(a);

EDIT:std::bitset确实定义了一个成员函数to_string(请参阅此处的文档(,该函数用于简单地返回表示位模式的字符串,而不是作为字符串化整数的数字。如果您确实想将std::bitset转换为std::string,将数字表示为整数,您可以尝试以下操作:

auto bits = std::bitset<16>(15);
std::string s = std::to_string(bits.to_ulong());

to_stringstd::bitset的成员函数。int中没有to_string成员。

<string>中提供了一个用于数字类型的to_string函数。你会这样使用它:

int a=5;
string s=to_string(a);

最新更新