ФАЙЛ C ++ в fstream? - PullRequest
       3

ФАЙЛ C ++ в fstream?

2 голосов
/ 24 июня 2011

Я не эксперт в этом, но у меня есть этот код:

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, я могу видеть шестнадцатеричные значения клавиш на консоли, но не печатать в тексте ....

Ответы [ 3 ]

3 голосов
/ 24 июня 2011

Прежде всего, ALL_CAPS, как правило, должен быть зарезервирован для макросов - использование его для нормальной переменной, содержащей FILE *, как правило, плохая идея.

Что касается остальных, то это будет выглядеть примерно так:

std::fstream output_file(file, std::fstream::in | std::fstream::out | std::fstream::app);
output_file << keys;

Хотя это может быть немного неправильно - прямо сейчас ваш прототип функции говорит, что keys - это int, но вы передаете его в fprintf, используя формат %s, который предназначен для строки не int. Как есть, код производит неопределенное поведение, и он не полностью уверен, что вы действительно хотите. Я сделал предположение, которое считаю разумным, но я не совсем уверен.

Редактировать: Если вы пытаетесь записать необработанные байты keys, это будет выглядеть примерно так:

output_file.write(reinterpret_cast<char *>(&keys), sizeof(keys));

Спасибо за предложение @ ildjarn.

1 голос
/ 24 июня 2011

http://www.cplusplus.com/reference/iostream/ostream/write/

Важно отметить, что вы можете использовать один и тот же стиль написания C в C ++. Так что весь ваш код на C будет работать на C ++! Что часто является более удачным решением, особенно для ввода-вывода, который не должен быть молниеносным.

0 голосов
/ 24 июня 2011

Для использования ofstream:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...