编写具有不同扩展名但与正在读取的文件同名的文件?

时间:2014-03-09 06:38:46

标签: c++ file opencv file-handling

使用freopen我想写一个与我在程序中读取但具有不同扩展名的文件同名的文件?

假设我正在阅读文件abc.jpg 我想在同一个程序中写入文件abc.txt。

我将文件的首字母作为参数给出,但是出现了编译错误。 我正在读取多个文件并写入多个文件。

  freopen ( "abc" + ".txt" , "w" , stdout ) ;

  error : cannot convert parameter 1 from 'std:string' to 'char *'    

2 个答案:

答案 0 :(得分:1)

+运算符不会使用两个字符串文字进行字符串连接。在C ++中(按标记),您可以使用std::string进行连接:

#include <string>

...

std::string baseFilename("abc");
std::string newFilename(baseFilename + ".txt");

freopen(newFilename.c_str(), "w", file);

std::string 支持通过+进行连接。请注意,我们使用的是c_str(),因为freopen()函数仍然采用C风格的字符串指针(const char *)。

答案 1 :(得分:-1)

如上所述,它是C而不是C ++。

#include <cstdio>
#include <string>
FILE* fp;

...

freopen ( (std::string("abc")+std::string(".txt")).c_str() , "w" , fp ) ;

as function接受const char *和文件指针FILE *。