繁体   English   中英

C ++文件到fstream吗?

[英]C++ FILE to fstream?

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

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;

不过,这可能有点错误-现在您的函数原型说keys是一个int ,但是您要使用%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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM