佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1430|回复: 6

如何用C++ save不同的filename[已解决]

[复制链接]
发表于 26-3-2009 02:13 AM | 显示全部楼层 |阅读模式
小弟有个难题,希望各位大大帮忙
问题是酱的:

我有一个loop,每loop 一次就会save 一个image file
每个file name 都不同,比如
第一个file name 是2009-3-26 12:09am
第二个file name 是2009-3-26 12:10am

或者以下的都可以:
第一个file name 是1
第二个file name 是2
依此类推,只要不同名就可以了

目前我做到的只能save 一个fixed 的filename 罢了
打个比如:SaveImage("Resultant.jpg", img);
我想把"Resultant.jpg" 变成一个variable, 每次save image 就有不同的名了

小弟学浅,上网找了很久都找不到
请各位大大指教。。
谢谢。。

[ 本帖最后由 心的太平洋 于 1-4-2009 02:29 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 26-3-2009 11:29 AM | 显示全部楼层

回复 1# 心的太平洋 的帖子

如果要以时间为文件名, 可以这样做
  1. #include <iostream>
  2. #include <ctime>
  3. #include <fstream>

  4. using namespace std;

  5. int main()
  6. {
  7.     time_t mytime;
  8.     struct tm * timeinfo;
  9.     ofstream file;

  10.     //put a loop here if u wan
  11.     time( &mytime);
  12.     timeinfo = localtime( &mytime);

  13.    
  14.     string filename = asctime(timeinfo);
  15.     filename += ".jpg";// or whatever extension u want, .gif? .png? .tiff? .bmp ?????

  16.     file.open(filename.c_str());

  17.     // save ur file

  18.     file.close();

  19.     return 0;
  20. }
复制代码

[ 本帖最后由 onlylonly 于 26-3-2009 11:32 AM 编辑 ]
回复

使用道具 举报

发表于 26-3-2009 11:38 AM | 显示全部楼层

回复 1# 心的太平洋 的帖子

或要以loop的count为名字
  1. #include <iostream>
  2. #include <sstream>
  3. #include <fstream>

  4. using namespace std;

  5. int main()
  6. {
  7.     ofstream file;

  8.     for(int i = 0; i < 100 /* or whatever u wan to*/; i++)
  9.     {
  10.         stringstream ss;
  11.         ss << i;
  12.         file.open(ss.str().c_str());
  13.         //save ur file
  14.         file.close();
  15.     }


  16.     return 0;
  17. }
复制代码
回复

使用道具 举报

 楼主| 发表于 26-3-2009 11:37 PM | 显示全部楼层

回复 3# onlylonly 的帖子

谢谢你, onlylonly.
回复

使用道具 举报

 楼主| 发表于 28-3-2009 04:03 PM | 显示全部楼层
我想改一下方法

我的问题是酱的:
我用了一个openCV library,里边有一个function 是save function
CvSaveImage("Resultant.jpg", img);
只要我有这行,我的照片(img)就能Resultant.jpg 这个名字里
我想要把它变成能转换的名字,比如说:1.jpg, 2.jpg
在。net 里, 可以变成(大概如下)
For int i = 0 to i = 2
dim filename as string
filename = i + ".jpg"
saveImage("+filename+", img)
next

如果我要在C++里写,那又如何写呢
请指教。。
回复

使用道具 举报

发表于 28-3-2009 06:54 PM | 显示全部楼层

回复 5# 心的太平洋 的帖子

首先CVSaveImage 这个function的 parameter 为 const char * , 也就是c-string, const CVArr * )

所以你的函数只需要pass一个 c-string 就行了。 先将filename存为string格式, 在意string.c_str() 转换为c string。

代码大概如下

#include <string>
#include <sstream>

......

for( int i = 0; i <= 2; i++)
{
      //convert int to string
      stringstream ss;
      ss << i;

     //declare filename var
     string filename = ss.str() + ".jpg"
     CvSaveImage(filename.c_str() , img);
}

.....

[ 本帖最后由 onlylonly 于 28-3-2009 06:56 PM 编辑 ]
回复

使用道具 举报

Follow Us
 楼主| 发表于 28-3-2009 09:47 PM | 显示全部楼层

回复 6# onlylonly 的帖子

做到了,学到新的东西。。

谢谢onlylonly的指导, 谢谢!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 14-12-2025 09:45 PM , Processed in 0.130503 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表