std::字符串的类型转换

Type conversion for std::strings

本文关键字:类型转换 字符串 std      更新时间:2023-10-16

是否可以为类提供类似全局类型转换运算符的函数?我特别在寻找一种从std::string公开const char*的方法。我尝试定义一个全局运算符,但无法编译。通过快速搜索和查看cpp引用,这些用户定义的转换需要成为成员http://en.cppreference.com/w/cpp/language/cast_operator.

有没有一种干净(或破解(的方法可以将std::string传递给接受const char*的方法,而不总是使用c_str()

背景:

我在一个跨平台上工作,我主要来自windows。我的大多数课程都使用ATL::CString。我正在将它们更改为使用std::string的。调用c_str是可以的,但在单元测试代码中,似乎每一行和每一个参数都有太多这样的调用,所以在这里尽量懒惰。

正如只有用户定义的类型可以定义自己的构造函数一样,只有用户定义类型可以定义它们是否可以隐式转换为其他类型(或通过非explicit构造函数从其他类型转换(。因此,不能从类外强制从std::stringconst char*的隐式转换。

只需制作一个函数来连接代码。

some_func(const char* c)

interface(string s) {
    some_func(s.c_str());
}

如果您使接口的名称与somefunc相同,会更好。