- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有模板代码需要将一些模板类型转换为字符串。为此,我为自己的类型重载了 to_string。但是类型也可以已经是一个字符串。然后编译失败,因为类型字符串本身没有重载 to_string(只是返回它的参数)。
编辑:示例代码:
template<class T>
class TemplatedClass
{
public:
string toString() const
{
// this should work for both simple types like int, double, ...
// and for my own classes which have a to_string overload
// and also for string, which is the reason for my question
return string("TemplatedClass: ").append(to_string(t_));
}
private:
T t_;
};
最佳答案
您可以使用适当的重载编写自己的模板函数,如下所示:
#include <iostream>
#include <string>
using namespace std;
template<typename T>
std::string toString(const T& t) {
return std::to_string(t);
}
std::string toString(const char* t) {
return t;
}
std::string toString(const std::string& t) {
return t;
}
int main() {
cout << toString(10) << endl;
cout << toString(1.5) << endl;
cout << toString("char*") << endl;
cout << toString(std::string("string")) << endl;
return 0;
}
关于c++ - 为什么没有 to_string(const string&)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37325436/
C++ 没有办法获取枚举的字符串表示形式。人们通过编写包含大量样板代码的自定义函数来解决这个问题 switch with case XYZ return "XYZ"; 这当然需要枚举的用户知道自定义函
boost::to_string 的目的是什么? (在 boost/exception/to_string.hpp 中找到)以及它与 boost::lexical_cast 有何不同和 std::to
我在编译代码时遇到了问题。我想使用 std::to_string,因为它是一种方便的将 int 转换为字符串的方式。但是,我不断收到“'to_string' 不是'std' 的成员”,所以这似乎是一个
我想知道为我自己的类实现字符串转换的最佳方法是什么。我进行了广泛的搜索(并查阅了一些书籍),但令人惊讶的是我没有在任何地方找到任何建议。在我看来,选项是: 转换为字符串的内部类定义:operator
美好的一天 我找遍了高处和低处,但没有解决方案。 IDE:NetBeans IDE 8.2MinGW:使用“最新的”MinGW 编译器。 原始问题: 我想将一个整数转换为字符串。 使用 this方法,
我正在研究 rust book .在字符串章节中,很多示例使用了 to_string() ,我的编译器版本(rustc 1.0.0-dev)给出了以下警告 strings.rs:3:23: 3:34
我有以下泛型函数,现在想尽可能将任何给定类型转换为字符串。 fn write_row(row: T) { let s: String = row.to_string(); } 但这显然行不通,
我正在尝试获取 double 的整数部分和小数部分。这就是我实现它的方式: void func(double d) { int intpart, decpart; intpart =
对于一个作业,我应该在头文件 'date.h' 中使用以下类,但是当我试图编译我的程序时,我得到一个错误说明: 'to_string': unknown override specifier. 下面的
我刚刚知道 C++ 有一个 std::to_string() 在 中定义.现在我想知道为什么 to_string()仅适用于数字类型。有什么特别的原因,为什么没有更一般的 template std
我试图让 to_string(NUMBER) 函数在我的 Ubuntu 计算机上运行数周,但它在 QT 环境或其他任何地方都无法运行。我的代码在我的 Mac osx 上完美运行,但是当我尝试在 Ubu
我是 Rust 新手。在尝试连接字符串文字和整数时,由于“to_string”函数,我遇到了许多错误。之后意识到我需要在整数前面放置一个引用/与号(&)。但是,我不明白为什么。你能解释一下为什么我需要
我有一个数据框,里面有文本值和int。我应用 df.to_string() 没有问题,然后调用 get_value() 函数并消除开头和结尾可能的空格: df.get_value(index,colu
与我使用 VS2010 的主题完全一样: 我有: std::string s = std::to_string(42); 错误 Error 4 error C2668: 'std::to_st
使用下面的代码, int main() { for(;;) { float d; cin >> d; cout << std::to_strin
我正在尝试使用格式化消息返回错误。 let msg = format!("wrong num of dimensions: {}", dimensions.len()).to_string(); re
我正在尝试读取格式如下的文件: ruby 2.6.2 elixir 1.8.3 然后像这样伪代码转换成二维数组: [ ["ruby", "2.6.2"] ["elixir", "1.8.3"]
我正在尝试创建实现 to_string() 的 Error 枚举。我已经尝试为他们derive(Debug),但这似乎还不够。 这是我正在处理的枚举: #[derive(Debug, Clone)]
为什么 std::to_string 函数不是 std::string 类的方法?因为它在逻辑上更合适,不是吗?我想知道他们为什么不成功: std::string 类的静态成员函数 为什么他们不将它与
我有两个文件:error.h 和 error.cpp。编译 g++ -std=c++0x 给我一个错误: error.cpp:9:33:**call of overloaded "to_strin
我是一名优秀的程序员,十分优秀!