使用freopen我想写一个与我在程序中读取但具有不同扩展名的文件同名的文件?
假设我正在阅读文件abc.jpg 我想在同一个程序中写入文件abc.txt。
我将文件的首字母作为参数给出,但是出现了编译错误。 我正在读取多个文件并写入多个文件。
freopen ( "abc" + ".txt" , "w" , stdout ) ;
error : cannot convert parameter 1 from 'std:string' to 'char *'
答案 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 *。