0
点赞
收藏
分享

微信扫一扫

【踩坑日志】SpringBoot读取nacos配置信息并提取信息中的IP地址(配置属性解析异常+排错记录)

码农K 2024-01-19 阅读 6

        QByteArray类对象的字符若都为数值,则可通过to**函数(也称为方法)转为各种类型的数据,示例如下:

QByteArray与char*互转

成员函数data可以返回指向字节数组中存储数据的指针。该函数的原型声明如下:

该指针可用于访问和修改组成数组的元素。可以指定具体访问字节数组中的某一个,比如

表示访问第0个.如果要把char*转为QString,可以直接作为参数传入QByteArray类的构造函数中:

我们来看一个小例子。 返回char*并打印内容。

1)启动Qt Creator 5.12,新建一个控制台项目,项目名为test。

(2)在test.cpp中输入如下代码:成员函数data可以返回指向字节数组中存储数据的指针。

 QByteArray与std::string互转

string是C++标准库中的字符串类型。QByteArray类提供的成员函数toStdString()可以将字节数组转为string。该函数的原型声明如下:

与该函数相反的函数是静态成员函数fromStdString(),它将string数据转为字节数组,该函数的原型声明如下:

其中,参数str是要转换的string字符串。函数返回转换后的字节数组。注意,转换的是str的一份备份,转换过程并不会影响str本身的内容。其中,参数str是要转换的string字符串。函数返回转换后的字节数组。注意,转换的是str的一份备份,转换过程并不会影响str本身的内容。

 与字符串QString互转

QString是Qt的字符串类,QByteArray是byte的数组。它们之间也可以互转。QByteArray与QString互转极为简单,二者在本质上是类似的,都是连续存储的,区别是前者可以存储无法显示的字符,后者只存储可显示的字符。如QByteArray类对象可以存储0x00-0x19,而QString类对象只能存储如0x30等可显示字符(Ox20-0x7E)。有关可显示字符,可参见ASCII表,相信大家在学习C语言时都了解过了。String转QByteArray的代码如下:

QByteArray转QString的代码如下:

下面再看一下QByteArray转为QString示例:

QString转为QByteArray示例:

 QByteArray与自定义结构体之间的转化

在Socket网络编程中,网络数据一般是uchar类型(最好是用uchar来传输,避免莫名其妙的错误另外用char类型也可以),在Qt中则可以使用QByteArray类。QByteArray类在OSocket共享库中,根据C++中char*数据与结构体之间的映射可以实现结构体与QByteArray的转化。下面来看一段代代码:

结果如下:

friend QDebug operator<<

这句语句是 C++ 中用于重载输出运算符 << 的一种典型用法。在这里,它的目的是为了使 QDebug 类能够更方便地输出特定类型的对象。

首先,QDebug 是 Qt 框架中用于输出调试信息的类。通过重载 << 运算符,你可以自定义类的输出行为,使其能够直接与 QDebug 对象一起使用。

假设你有一个类 MyClass,你想要能够以更友好的方式将其对象输出到 QDebug,你可以这样做

class MyClass {
    // 类的定义
public:
    // ...
};

QDebug operator<<(QDebug debug, const MyClass &obj) {
    // 自定义输出逻辑
    debug << "MyClass object";  // 这里可以根据实际情况输出你想要的信息
    return debug;
}

 friend 关键字在 C++ 中用于声明一个函数或类是另一个类的友元。友元函数或友元类具有访问其所在类的私有成员的权限。这允许在特定情况下赋予外部函数或类对私有成员的访问权,从而提供更灵活的设计。

举报

相关推荐

0 条评论