我需要保存一堆带有编号索引的图像文件。我正在尝试使用stringstream构造这些文件名。但是,stringstream.str()似乎不返回文件名,而是返回一些垃圾。
这是代码:
std::stringstream filename;
filename << filepath << fileindex << ".png";
bool ret = imwrite(filename.str(),frame, compression_params);
fileindex++;
printf("Wrote %s\n", filename.str());
这是一次执行的输出:
Wrote ╠±0
Wrote ╠±0
Wrote ╠±0
Wrote ╠±0
这是另一个执行的输出:
Wrote ░‗V
Wrote ░‗V
Wrote ░‗V
Wrote ░‗V
有什么建议么? imwrite是一个opencv函数吗,并且我在文件顶部使用[code] namespace cv; [/ code]-opencv和std之间是否存在一些干扰?
最佳答案
您不能将像std::string
这样的非POD类型传递给像printf
这样的C风格的可变参数。
您可以使用C++输出:
std::cout << "Wrote " << filename.str() << '\n';
或者,如果您喜欢老式的怪异方法,请提取C样式字符串以用于C样式输出:
printf("Write %s\n", filename.str().c_str());
关于c++ - std::stringstream.str()输出垃圾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18984855/