我得到了这个想法并尝试编写一个string_cast
转换运算符来在C++字符串之间进行转换.
templateclass string_cast { public: template operator std::basic_string (const std::basic_string & InputString) { std::basic_string OutputString; const std::basic_string ::size_type LENGTH = InputString.length(); OutputString.resize(LENGTH); for (std::basic_string ::size_type i=0; i (OutputString[i]); } return OutputString; } };
我试着像这样使用它:
std::string AString("Hello world!"); std::cout << AString << std::endl; std::wcout << string_cast(AString) << std::endl; // ERROR
错误消息是:
Error C2440 '': cannot convert from 'const std::string' to 'string_cast '
这在C++中是不可能的,还是我在代码中遗漏了一些东西?
您可以使用签名编写免费功能:
templatestd::basic_string string_cast(const std::basic_string & InputString)