没有匹配函数调用std :: basic_ofstream <char> :: write()

时间:2016-07-20 18:13:36

标签: c++ qt c++11

我试图在这里完成二进制i / o并且我一直收到这个错误......

no matching function for call to 'std::basic_ofstream<char>::write(int*,unsigned int)'

no matching function for call to 'std::basic_ofstream<char>::write(double*,unsigned int)'

这是我的代码......

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    int x = 123;
    double fx = 12.34;
    ofstream myfile("filename.dat", ios::out | ios::binary);
    myfile.write(&x, sizeof(x));
    myfile.write(&fx, sizeof(fx));
    myfile.close();
    return 0;
}

我发现其他多个帖子的情况相同,但他们的修正通常是输入...

ofstream myfile(filename.c_str(), ios::out | ios::binary);

当我多次尝试时,编译器仍然尖叫着我。我使用QT创建器作为我的IDE,我已经验证它正在使用C ++ 11。并在Code :: Blocks中运行相同的代码并获得相同的错误。它不喜欢文件名参数i传递给它。我认为这与第一个参数是ofstream open()的成员函数的const char有关吗?!

void open(const char *filename, [int mode], [int prot]);

我在这里不理解/缺少什么?

1 个答案:

答案 0 :(得分:1)

write()是一个输出字符的函数,它不会应用任何格式,您需要自己进行格式化。

该函数需要const char*参数。它不会指向其他类型,需要首先进行转换。

有关详细信息,请参阅here

如果您希望流格式化输出,则流运算符<<更适合。