在WinAPI函数中使用std::wstring:并非所有文本都已发送
Using std::wstring in WinAPI function: not all text sent
当HTTP发布数据时;如果我使用std::wstring
作为参数,并不是所有的文本都被发布。但是如果我使用一个标准的TCHAR数组,那么所有的文本都会被发布。为什么会发生这种情况?我如何继续使用std::wstring
?
// wont compile unless cast to LPVOID and not all data is sent.
HttpSendRequest(hRequest, hdrs, -1, (LPVOID)fData.c_str(), fData.size());
// successfully sends all fData text
TCHAR s[1024] = {0};
_tcscpy(s, fData.c_str());
HttpSendRequest(hRequest, hdrs, -1, s, sizeof(s));
HttpSendRequest文档中写道:
dwOptionalLength[in]
可选数据的大小,以字节为单位。如果没有要发送的可选数据,则此参数可以为零。
size()
返回字符串中的字符元素数,而不是以字节为单位的字符串大小。在Windows上,wchar_t
的字节大小是2,所以不是这个:
HttpSendRequest(hRequest, hdrs, -1, (LPVOID)fData.c_str(), fData.size());
它需要这样:
HttpSendRequest(hRequest, hdrs, -1, (LPVOID)fData.c_str(), fData.size() * sizeof(wchar_t));
相关文章:
- 文本文件中的单词链表
- 从命令行c++发送文本文件名
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- Ctypes wstring通过引用传递
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何在c++中从文本文件中逐行读取整数
- 如何创建一个QTableWidgetItem,用长文本右对齐,左边有省略号
- 从文本文件中读取时钟时间和事件时间并进行处理
- 如何从文本文件中读取值和数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- 如何根据单词在文本中出现的概率输出单词
- 如何将std::string中包含utf-16编码的文本转换为utf-16 wstring
- 在WinAPI函数中使用std::wstring:并非所有文本都已发送