我需要保存一堆带有编号索引的图像文件。我正在尝试使用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/

10-09 05:24