gpt4 book ai didi

c++ - 将字符串转换为自定义类

转载 作者:搜寻专家 更新时间:2023-10-31 00:27:04 25 4
gpt4 key购买 nike

有没有办法将字符串转换为自定义类,例如,如果我有一个名为 Numb 的类,但我想用 = 运算符将其声明为字符串,我可以重载它吗?

class Numb{
std::string x;
};

int main(){
Numb n = "32";
//Creates a Numb and makes x = "32"
}

最佳答案

您想从字符串文字构造 Numbs。 字符串文字与类型const char * 字符串文字具有类型const char [N],我们可以通过编写一个接受 const char * 的函数。

要定义一个具有这种行为的转换构造函数,只需编写一个类似复制构造函数的签名,而不是期望一个相同类型的参数,而是期望一个 const char * 类型的参数。它的签名看起来像 Myclass(const char *);

或者,您可以从字符串复制或移动构造,但这需要执行 Numb n = std::string { "32"}; 或类似操作,以将字符串常量转换为 std::字符串。

这是一些示例代码,其中 main() 返回 3。这里我们还演示了如何处理该值:如果我们改为执行 Num n2 = std::string { "TRAP"};,代码将返回 1。如果我们执行 Num n2 = std::string { "ANYTHING OTHER THAN TRAP"};,它将返回 2。

#include <string>

struct Num {
Num()
: _val(2) {}

Num(const std::string & str) {
if (str == "TRAP") {
_val = 1;
} else {
_val = 2;
}
}

Num(const char * s) {
_val = 3;
}

int _val;
};

int main(void) {
// Num n = std::string { "TRAP" }; // returns 1
// Num n = std::string { "NOTTRAP" }; // returns 2
Num n = "TRAP";
return n._val;
}

https://godbolt.org/g/Lqwdiw

编辑:修复类型系统错误,将字符串 arg 视为 & 而不是 &&,简化示例,更新编译器资源管理器链接。

关于c++ - 将字符串转换为自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50473662/

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