将整数连接到字符串
Concatenating an integer to a string
我正试图在visualstudio2008中保存一系列图像,所有图像都以"Image"为前缀。唯一的区别因素应该是它们的数量。例如,如果我要保存10张图像,那么情况应该是
i=1;
while(i<10)
{
cvSaveImage("G:/OpenCV/Results/Imagei.jpg",img2);
i++
//"i" is gonna be different every time
}
所以我需要把整数和字符串连接起来。。。期待着答案。。。
c++方式(在c++11之前(应该是:
#include <sstream>
...
ostringstream convert;
convert << "G:/OpenCV/Results/Image" << i << ".jpg";
cvSaveImage(convert.str().c_str(), img2);
i++;
使用C++11:
#include <string>
string filename = "G:/OpenCV/Results/Image" + to_string(i) + ".jpg";
cvSaveImage(filename.c_str(), img2);
编辑
构建字符串的一种通用且可能更有效的方法是使用stringstream
:
ostringstream ss;
ss << "G:/OpenCV/Results/Image" << i << ".jpg";
string filename = ss.str();
cvSaveImage(filename.c_str(), img2);
这也适用于C++11之前的编译器。
首先,如果您从i = 10
开始并执行while( i < 10 )
,那么您的代码将只保存9项。现在谈谈你的问题,
for( i = 1; i < 11; i++ )
{
std::stringstream imagenum;
imagenum << "G:/OpenCV/Results/Image" << i << ".jpg" ;
cvSaveImage(imagenum.str().c_str(), img2) ;
}
检查example_link
opencv附带cv::format(([这可能只是一个sprintf包装器,但非常方便,imho]
因此,您的示例可能看起来像:
cv::imwrite( cv::format( "G:/OpenCV/Results/Image%d.jpg", i ), img );
或者,如果您坚持使用过时的1.0 api,则:
cvSaveImage( cv::format( "G:/OpenCV/Results/Image%d.jpg", i ).c_str(), img );
string imgname="./Image_";
char cbuff[20];
sprintf (cbuff, "%03d", i);
imgname.append(cbuff);
imgname.append(".jpg");
输出:
./Image_001.jpg
./Image_002.jpg
./Image_010.jpg etc.
相关文章:
- 使用短运算符的字符串连接有区别吗?
- 字符串连接时间复杂度 c++
- 如何将两个 jlong 数据类型转换为 jstring,然后将两个字符串连接在一起以便从 JNI 将字符串返回给 jav
- 如何在 C 宏中将变量字符串与文字字符串连接起来?
- C++中干净高效的字符串连接
- 如何将 Unicode 字符串连接成字符串以传递到 mysql 调用中
- 如何与字符串连接thar数组
- 如何将平台^字符串转换为wstring,然后与L字符串连接
- 如何在c++中进行快速字符串连接
- 在C++中,相当于CPython字符串连接
- 如何在 c++ 中使用 STL 将带有空格的字符串连接成一个字符串
- C++将三个char*字符串连接在一起
- 尝试通过二叉树中的递归返回字符串(连接)
- 使用流的字符串连接返回垃圾
- 将字符串变量与整数和文本字符串连接起来的 C++ 字符串流
- 将 int 变量与字符串连接会导致奇怪的输出
- C++ 将常量字符 * 与字符串连接起来,仅打印常量字符 *
- 通过将模板参数与字符串连接起来生成C++类型名
- 将我的对象与字符串连接
- 没有得到预期的结果字符串连接