gpt4 book ai didi

c++ - 为什么数字类型只有一个 `to_string()`?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:49 26 4
gpt4 key购买 nike

我刚刚知道 C++ 有一个 std::to_string() <string> 中定义.现在我想知道为什么 to_string()仅适用于数字类型。有什么特别的原因,为什么没有更一般的

template <typename T>
std::string to_string(const T& t);

?

可以这样实现:

template <typename T>
std::string to_string(const T& t) {
std::ostringstream s;
s << t;
return s.str();
}

我怀疑是这样的将军to_string不存在,因为自己编写很容易,但同样的论点适用于 to_string()服用int , double

最佳答案

因为 std::to_string() 要求。

如标准所述:

string to_string(int val);

string to_string(unsigned val);

string to_string(long val);

string to_string(unsigned long val);

string to_string(long long val);

string to_string(unsigned long long val);

string to_string(float val);

string to_string(double val);

string to_string(long double val);

Returns: Each function returns a string object holding the character representation of the value of its argument that would be generated by calling sprintf(buf, fmt, val) with a format specifier of "%d", "%u", "%ld", "%lu", "%lld", "%llu", "%f", "%f", or "%Lf", respectively, where buf designates an internal character buffer of sufficient size.

编写一个可以确定需要用于 std::sprintf 的说明符的模板化函数会使事情变得不必要的复杂。

关于c++ - 为什么数字类型只有一个 `to_string()`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43400961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com