Как вы выполняете следующие операции с файлами в C ++? - PullRequest
2 голосов
/ 09 ноября 2008

Как вы выполняете следующие операции в C ++?

  1. Открытие файлов
  2. Закрытие файлов
  3. Чтение файлов
  4. Запись файлов

Ответы [ 4 ]

12 голосов
/ 09 ноября 2008

Чтение

#include <fstream>
int main()
{
    std::ifstream    inputFile("MyFileName")  // Opens a File.

    int  x;
    inputFile >> x; // Reads an integer from a file.

    std::string word;
    inputFile >> word; // Reads a space separated word from a file.

    double y;
    inputFile >> y; // Reads a floating point number from the file.

    // etc..
 } // File AutoMagically closed by going out of scope.

Запись

#include <fstream>
int main()
{
    std::ofstream    inputFile("MyFileName")  // Opens a File.

    int  x = 5;
    inputFile << x << " "; // Writes an integer to a file then a space.
    inputFile << 5 << " "; // Same Again.

    std::string word("This is a line");
    inputFile << word << "\n"; // Writes a string to a file followed by a newline
                               // Notice the difference between reading and
                               // writing a string.
    inputFile << "Write a string constant to a file\n";

    double y = 15.4;
    inputFile << y << ":"; // Writes a floating point number 
                           // to the file followed by ":".

    // etc..
 } // File AutoMagically closed by going out of scope.
6 голосов
/ 09 ноября 2008

все сразу

{ 
    std::ifstream in("foo.txt"); /* opens for reading */
    std::ofstream out("bar.txt"); /* opens for writing */
    out << in.rdbuf(); /* streams in into out. writing and reading */
} /* closes automatically */
3 голосов
/ 09 ноября 2008

http://www.cplusplus.com/doc/tutorial/files.html

Лично я все еще использую fopen, fread, fwrite и т. Д. В стиле C, но это больше предпочтение, чем "правильное".

1 голос
/ 09 ноября 2008

С C ++ у вас есть много вариантов взаимодействия с файлами, особенно если вы используете одну из множества фреймворков, таких как Qt, wxWidgets или GLib. Подводя итог, можно сказать, что стандартная библиотека C ++ использует потоковую модель доступа к файлам через std :: ifstream и std :: ofstream. Это похоже на то, что вы видите при использовании std :: cout, и тому, что иллюстрирует пост @ Martin. У вас также есть стандартные функции библиотеки C для чтения и записи файлов, а именно open (), close (), read () и write (). Варианты f * () принимают указатель FILE, а не дескриптор файла. Варианты C более полезны, когда вы хотите рассматривать файл как необработанный поток байтов, что, к сожалению, происходит чаще, чем следует. Хотя оба они являются «переносимыми», построение путей и обработка каталогов / специальных файлов обычно не являются, поэтому вы получаете такие вещи, как boost :: filesystem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...