我试图在这里完成二进制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]);
我在这里不理解/缺少什么?
答案 0 :(得分:1)
write()
是一个输出字符的函数,它不会应用任何格式,您需要自己进行格式化。
该函数需要const char*
参数。它不会指向其他类型,需要首先进行转换。
有关详细信息,请参阅here。
如果您希望流格式化输出,则流运算符<<
更适合。