写入一个扩展名不同但名称与所读文件相同的文件



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

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

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

  freopen ( "abc" + ".txt" , "w" , stdout ) ;
  error : cannot convert parameter 1 from 'std:string' to 'char *'    

+运算符不使用两个字符串字面值进行字符串连接。在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 *)。

如问题所述,它是C而不是c++。

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

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

作为函数接受const char*和文件指针file *。

相关内容

  • 没有找到相关文章

最新更新