将字符串转换为自定义类

有没有一种方法可以将字符串转换为自定义类,例如,如果我有一个名为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 *

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

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

这是一些示例代码,其中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作为&而不是&&,简化示例,更新编译器资源管理器链接。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法从自定义类转换为字符串

将元组转换为自定义字符串

SwiftyJson能够将自定义swift类转换为json字符串吗?

将自定义类型转换为字符串

将自定义字符串转换为DateTime

使用自定义类型将JSON字符串转换为Map

如何将Fsharp中的自定义类型转换为JSON字符串?

将丑陋的字符串(自定义非json格式)转换为字典

无法使用自定义模式将字符串转换为localDate

Swift:使用ObjectMapper将JSON字符串转换为自定义对象数组

如何将JSON字符串日期转换为自定义格式日期?

自定义JsonConverter可以将decimal.MinValue转换为空字符串并返回

将Java Map转换为自定义键=值字符串

将字符串转换为自定义结构 Go

将字符串值转换为自定义对象列表

将字符串切片转换为自定义类型的切片

如何将日期字符串转换为自定义日期格式?

将嵌套的json字符串转换为自定义对象

将字符串转换为自定义日期格式-C#Razor

使用自定义语言环境将C ++字符串转换为小写

如何将字符串数组转换为自定义嵌套对象

使用自定义格式将 JSONArray 转换为字符串数组

如何将字符串转换为自定义数据类型

将JSON字符串转换为Java中的自定义对象

Pyspark SQL:将字符串转换为时间戳自定义格式

自定义函数:将字符串输入转换为输入后的浮点数

使用PHP-Symfony将数组中的元素转换为自定义字符串

Angular-6:将字符串转换为自定义对象的数组

如何将规则日期值从数组转换为自定义字符串