将string转换为CString
Convert string to CString
我有一个这样声明的字符串:
string query = "INSERT INTO tblVehicle (OVImage) VALUES ('";
query += decodedData;
query += "')";
(其中'decodedData'是保存Base64数据的字符串)当我使用此代码将其转换为'CString'时
CString cQuery = query.c_str();
我在'CQuery'中得到这一行:
"INSERT INTO tblVehicle (OVImage) VALUES ('ÿØÿà"
和字符串的其余部分不在'CQuery'中。我应该怎么做在CString长文本?
每当您看到字符串突然像这样"结束"时,您可以推断源字符串中在该点有一个空字符(0)。C字符串也被称为以空结尾的字符串,因为第一个空字符表示数据的结束。std::string
可以容忍这些,但是当你把它插入CString
时,它会在那一点被切断,因为数据中的null告诉它停在那里。
decodedData
不包含有效的base64数据;它似乎只是转换的二进制数据。将二进制数据转换为字符串最终会导致随机的空字符,所以这是CString的禁忌。只看"ÿØÿà",很明显它不是一个普通的base64字符串,因为base64字符串通常包含a-z, a-z, 0-9, +和/。https://en.wikipedia.org/wiki/Base64。因为一个正确的Base64字符串不会包含null,所以这个问题不会发生。
decodedData
是一个字符串…
std::replace(decodedData.begin(), decodedData.end(), ' ', '!');
那么你就可以知道空在哪里出现了。但这可能是有原因的,你应该弄清楚。
相关文章:
- 如何将 CString 转换为字节 [] 数组?
- 如何将CString转换为使用WCHAR的Windows API和自定义函数?
- 将 CString 转换为字符类型
- 将cstring转换为camelcase
- 从 ATL::CString 转换为 C++ 中的字符串
- 将 ATL::CString 转换为 std::vector<unsigned char>
- 将 ATL CString 转换为字符数组
- 如何将 CString 转换或转换为 LPWSTR
- 如何将 CString 转换为 UCHAR 数组
- 将 MFC 的 CString 转换为 ASCII 和 UNICODE 的 int
- 需要将cstring转换为byte*,并需要在c++函数中将其作为i/p参数传递
- 将CString转换为const byte*的Unicode项目
- 我如何将CString转换为BYTE
- 将MFC CString转换为无符号整数
- 隐式将CString转换为char*
- 如何将CString转换为CByteArray
- 如何将ATL/MFC CString转换为QString
- 在mfc中将CString转换为float
- 将宽CString转换为char*
- 如何将CString转换为ofstream