字符串流变量不显示在二进制代码中
Stringstream variable does not show in binary code?
为什么字符串流查询变量不工作?
std::stringstream query (stringstream::in | stringstream::out | stringstream::binary);
for(vector<uchar>::iterator it=buff.begin();it !=buff.end();it++)
{
query<<*it;
}
cout<<query.str().length();
printf("output:%s",query);
[编辑]Mat data=image;//image is ROI (50X50) from IplImage* getting Matrix data.
std::vector<uchar> buff;
std::vector<int> p;
p.push_back(CV_IMWRITE_PNG_COMPRESSION);
p.push_back(9);
cv::imencode(".png", data, buff);//for ROI image data to "png" vector buff.
std::vector<char> query(buff.size()*2+1); //MooingDuck's codes...
int len = mysql_real_escape_string(handle, &query[0], (const char*)&buff[0], query.size());
query.resize(len);
我得到错误:
jmp _escape_string_for_mysql+0F2h (40CFA2h) 0040CF61 mov艾尔,字节ptr (edi) & lt ;--------------------------------------- 错误点0040CF63 movsx exx,al 0040CF66 cmp exx,5Ch 0040CF69 ja_escape_string_for_mysql+0E5h (40CF95h)
因为你用错了printf
。最好不要使用printf
。
std::cout << query.str();
同样,在这里指定binary
几乎是无用的,in
/out
是多余的(stringstream
是默认的in/out)。
stringstream::binary
并不像你想象的那样。
stringstream::binary
使流不将系统换行符转换为c++换行符。stringstream::text
使流将系统换行符转换为c++换行符。
这两种方法都不能将流读取或写入为"二进制代码"。
c++的换行符是n
,而Windows系统的换行符是rn
(两个字符!),linux只使用n
。我听说Mac系统的换行符是/是nr
,但我不能确认。
同样,正如Oli Charlesworth和Cat Plus Plus所观察到的,printf
不能与c++对象一起工作。使用std::cout
代替,或者将std::string
转换成printf
可以理解的const char*
。
从你的评论来看,你想要一些类似
的东西std::vector<char> query(buff.size()*2+1);
int len = mysql_real_escape_string(mysql, &query[0], (const char*)&buff[0], query.size());
query.resize(len);
将转义buff
中的二进制数据,以便安全地插入到mysql查询中。
相关文章:
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 我编写了代码将十进制分数转换为其二进制等效数.它编译得很好,但在执行时挂起
- 如何在使用 LLVM 编译时获取部分源代码的二进制代码
- 如何存储霍夫曼转换后的二进制代码?
- 编译器C++如何在二进制代码中表示整数
- 如何在Qt中将文件作为二进制代码读取
- 从 2 到 7 的数字的二进制代码
- 调试整数到二进制代码?不转换32、64
- 将2个字符转换为其ascii二进制代码
- 当我们编译C++时,我们会得到什么?二进制代码?汇编程序代码
- C++字符串到二进制代码/二进制代码到字符串
- C++生成器:将二进制代码转换为AnsiString
- 有没有优化x86二进制代码的库
- 我应该如何存储和计算二进制代码之间的汉明距离
- 字符串流变量不显示在二进制代码中
- 模板的实例化会导致二进制代码重复吗,编译器会阻止吗?
- 如何从c#应用程序运行c++二进制代码
- int到二进制代码解释C++
- 如何读取exe文件的二进制代码- c++
- 编译一个静态二进制代码,其中有一个函数gethostbyname