gpt4 book ai didi

c++ - QString() 与 sprintf()

转载 作者:行者123 更新时间:2023-11-28 02:37:50 24 4
gpt4 key购买 nike

我有一些代码,其中客户端和服务器之间有一个 TCP 连接。我需要向服务器发送一些 xml 数据并从中接收响应。我正在尝试这样做:

char request[MAX];
sprintf(request, "<attestationRequest><majorVersion>%d</majorVersion><minorVersion>%d</minorVersion></attestationRequest>", major, minor);
write(sockfd,request, length);

while(recv(sockfd, response, MAX, 0) >= 0)
{
cout << "response " << response;
//do something;
}

但是收到的数据是(预期响应+请求)。

如果我尝试使用QString 填充数据,接收到的数据是正确的。

QString request = QString("<attestationRequest>"
"<majorVersion>%1</majorVersion>"
"<minorVersion>%2</minorVersion>"
"</attestationRequest>")
.arg(major)
.arg(minor)

对于这两种情况,其余代码是相同的。当我使用 sprintf 时,我收到了超过 11000 字节的数据,但在 QString 的情况下收到了 9000 字节。如果我遗漏了什么,我将无法理解。

最佳答案

IMO 两种解决方案都不好。
使用QXmlStreamWriter更安全更好.在大多数情况下,对文本的手动操作将以不正确的编码或缺少转义序列或其他 xml 格式违规而告终。

另一个问题是您没有提供任何数据来说明您是如何进行通信的。很可能是错误导致了您的问题。

关于c++ - QString() 与 sprintf(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26929521/

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