在工程中,很多时候需要读取文件,而文件名filename或者path是有一定规律的。这就要求当循环时,i发生变化,filename里的一部分也随着变化。
在matlab里,要实现这个功能很方便,可以用int2str(i)实现,将整形的i转成字符型。 那么在c或者c++下呢??最初用itoa,但我在linux下用不了这个函数。所以放弃了。看了很多资料,也没有直接回答的。
摸索了一天,终于解决。我将我的解决思路附下。
我要实现,当for循环时,路径path的值为 /....../01/01.jpg , /....../01/02.jpg, /....../01/03,jpg依次类推,当到01/05.jpg时, 变成/02/01.jpg /02/02.jpg /02/03.jpg...........................剩下的我就不写了。下面是实现代码:
string path = "/ayan/RoiPalmData/00/00.jpg";
string path1 = "/ayan/RoiPalmData/";
string path3 = ".jpg";
for(int i=1; i<9; i++)
for(int j=1; j<6; j++)
{
char name[5] = {path[18], path[19]+i, '/', path[21], path[22]+j};
string path2 = name;
string pathS = path1 + path2 + path3; //拼接
const char *path = pathS.c_str(); //因为调用cvLoadImage时,路径必须是const char*类型的,所以这里进行了转换
cout<<path<<endl;
CreateDate(path);
}
欢迎大家提出意见,或进行修正。这只是一种实现方法。