gpt4 book ai didi

c++ - char 数组上的奇怪字符到字符串转换

转载 作者:搜寻专家 更新时间:2023-10-31 00:54:30 25 4
gpt4 key购买 nike

我知道有很多关于字符数组到字符串转换的信息和线程,但我尝试了很多“解决方案”但都没有成功。我试过这个 solution这是最接近我的问题,但也没有用。

我有以下代码:

recvlen = recvfrom(s, recvbuf, BUFLEN, 0, (struct sockaddr *) &si_other, &slen);
if (recvlen < 0) {
printf("socket() failed with error code : %d", WSAGetLastError());
}

string msgrcv(recvbuf, recvlen);
printf("String : %s \n", msgrcv); //Prints the weird characters
printf("Array : %s \n", recvbuf); //Prints ok the result

有什么我遗漏或错误的想法吗?

最佳答案

您打印的奇怪字符是未定义行为的结果。

printf("String : %s \n", msgrcv);

%s 格式说明符需要一个指向 nul 终止字符数组(C 字符串)的指针。您传递了一个 std::string(假设一个讨厌的 using namespace std; 某处)。

要将数据类型与格式说明符匹配,请使用 std::string::c_str:

printf("String : %s \n", msgrcv.c_str());

关于c++ - char 数组上的奇怪字符到字符串转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45142731/

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