Sha*_*rry 0 c++ templates tostring data-structures
我正在使用模板创建一个 LinkedList 类,因为我想将它用于以后需要的任何类型
template <typename T> class LinkedList {}
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个将列表的所有元素添加到字符串中的函数:
std::string join(const char *seperator)
{
std::string str;
auto curr = this->head;
while (curr)
{
str += std::to_string(curr->value);
if (curr->next)
str += seperator;
curr = curr->next;
}
return str;
}
Run Code Online (Sandbox Code Playgroud)
它适用于我测试的类型(int、double、float...),但不适用于 std::string,该to_string()函数会生成错误
错误 C2665 'std::to_string':9 个重载中没有一个可以转换所有参数类型
我认为它不适用于其他类型。那么,您能否提供一种从任何类型转换为 std::string 的通用方法。
在 C++ 中,没有通用的方法可以将任意类型的对象转换为字符串。但最常用的将数据输出为字符串的工具是输出流。所以,你可以std::ostringstream这样使用:
std::string join(const char *seperator)
{
std::ostringstream strm;
auto curr = this->head;
while (curr)
{
strm << curr->value;
if (curr->next)
strm << seperator;
curr = curr->next;
}
return strm.str();
}
Run Code Online (Sandbox Code Playgroud)
请注意,要使其正常工作,类型T应该提供一个作为第一个参数的operator<<重载。此工具支持std::ostream&所有算术类型、C 样式字符串和,但并非所有用户定义类型。std::string
| 归档时间: |
|
| 查看次数: |
1510 次 |
| 最近记录: |