3.std::string转成c_str的问题
3.std::string转成c_str的问题
问题产生:
或取一个文本的内容时,直接调用从尾部转换成const char*
const char* sendData = ui->lineEditSendContext->text().toStdString().c_str();
数据结果有时候接收不全,会得到乱码的结果。
常见原因
- 编码转换问题:Qt 的 QString 和标准库 std::string 之间的编码不一致
- 临时对象生命周期问题:
toStdString()创建的临时对象被销毁 - 多字节字符处理不当:包含非ASCII字符时处理不正确
- 内存越界访问:转换后的字符指针使用不当
问题解决
解决方式,不直接一步转换,分步转换。
std::string stringContext = ui->lineEditSendContext->text().toStdString();
const char* sendData = stringContext.c_str();

浙公网安备 33010602011771号