关于QT(tcp)通信中特殊符号自动转义问题的解决方法

在TCP通信时遇到/r/n等特殊字符被自动转义成//r//n的问题,作者通过使用QString的fromRawData方法,结合C++的std::string和constchar*,成功保持数据原始性,避免了字符转义。将控件数据转换为QByteArray发送,确保内容不被修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天开发项目是遇到了一个头疼的问题,就是tcp通信时特殊字符自动转义的问题:

        如:(/r/n)在接收端就会是(//r//n)

这个问题困扰了我许久,但是协议又写死了,所以上网找了很长时间找到了一个方法

        就是使用fromRawData()方法

 QString str = ui->sendText->toPlainText();       //读取控件上的数据  
        const char* ch = str.toStdString().c_str();    //先把用c_str函数把str转为const char*
                                                       //转之前必须使用StdString才能调用c_str
        qDebug()<<ch;
        qDebug()<<str;   

        QByteArray bar;
        bar = QByteArray::fromRawData(ch,strlen(ch));    //主角在这里
                                                         //此函数可以保证内容不被修改或删除
        qDebug()<<strlen(ch);
        qDebug()<<bar;
        tcp->write(bar);    //发送数据

当然QStringfromRawData方法也可以,无非就是把char换成了Qchar。

希望可以帮到大家

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值