使用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 *。