2016-07-20 6 views
-2

Я пытаюсь выполнить двоичный файл ввода/вывода здесь и я получаю эту ошибку, которая ...нет соответствующего вызова функции станд :: 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]); 

Что я не понимаю/не хватает здесь?

+1

Что вам не хватает, так это отсутствие перегрузок 'write' для каждого типа, о котором вы можете думать. Если вы хотите выполнять двоичный ввод-вывод, вы должны быть явным образом оговорены, поместив указатель в память, который содержит объект 'const char *'. –

ответ

1

write() - функция для вывода символов, она не будет применять какое-либо форматирование, вам нужно сделать форматирование самостоятельно.

Функция требует аргумента const char*. Он не будет принимать указатели на другие типы, сначала нужно сделать преобразование.

Для получения более подробной информации см. here.

Оператор потока << лучше подходит, если вы хотите, чтобы поток форматировал выходной сигнал.

Смежные вопросы