Я пытаюсь выполнить двоичный файл ввода/вывода здесь и я получаю эту ошибку, которая ...нет соответствующего вызова функции станд :: basic_ofstream <char> :: написать()
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 и получить ту же ошибку. Его не нравится параметр filename, который я передаю ему. Я думаю, что это имеет какое-то отношение к первому параметру, являющемуся const char функции-члена ofstream open() ?!
void open(const char *filename, [int mode], [int prot]);
Что я не понимаю/не хватает здесь?
Что вам не хватает, так это отсутствие перегрузок 'write' для каждого типа, о котором вы можете думать. Если вы хотите выполнять двоичный ввод-вывод, вы должны быть явным образом оговорены, поместив указатель в память, который содержит объект 'const char *'. –