C++ FILE to fstream?

C++ FILE to fstream?

本文关键字:fstream to FILE C++      更新时间:2023-10-16

我不是这方面的专家,但我有以下代码:

FILE *OUTPUT_FILE;
OUTPUT_FILE = fopen(file, "a+");
fprintf(OUTPUT_FILE, "%s", &keys );
fclose(OUTPUT_FILE);

我想把它传递给一个fstream语法

ofstream fs;

它们包含在这个功能中:

int Store(int keys, char *file)

我知道这是一个C函数,但由于我正在学习C++,我想知道如何将其转换为C++

对不起,我不知道还有什么,也不知道fs是否与fopen兼容。

更多信息:

谢谢大家,但它似乎忽略了一些价值

    int Store(int keys, char *file)
    {

    ofstream output_file("log.txt");
    output_file << keys; 
    output_file.close();
    cout << keys;
    return 0;
    }

当它输出文件时,我只看到一个D,我可以在控制台上看到键的十六进制值,但没有打印在文本上。。。。

首先,all_CAPS通常应该为宏保留——将其用于包含FILE *的普通变量通常是个糟糕的主意。

就其他方面而言,它看起来是这样的:

std::fstream output_file(file, std::fstream::in | std::fstream::out | std::fstream::app);
output_file << keys;

不过,这可能有点错误——现在您的函数原型说keysint,但您使用%s格式将其传递给fprintf,该格式用于字符串,而不是int。照原样,代码会产生未定义的行为,而且它并不能完全确定您真正想要的东西。我做了一个我认为合理的猜测,但我不太确定。

编辑:如果你试图写出keys的原始字节,它看起来像:

output_file.write(reinterpret_cast<char *>(&keys), sizeof(keys));

谢谢你的建议@ildjarn。

http://www.cplusplus.com/reference/iostream/ostream/write/

需要注意的是,您可以在C++中使用相同的C风格编写。因此,您的所有C代码都将在C++中工作!这通常是时间更快乐的解决方案,尤其是对于不需要闪电般快速的IO。

要使用流:

std::ofstream foo; //Declaring the ofstream object
foo.open("file_name"); //Setting the output file name
foo<<keys; //Now it's ready to take << input!
foo.close(); //When you're done with the file