Страница 1 из 1
чтение файла
Добавлено: 05 июн 2025, 15:01
ya
построчное чтение содержимого файла
Код: Выделить всё
#include <fstream>
#include <string>
std::string readFile(const std::string& filename)
{
std::ifstream file(filename);
std::string content;
if (file.is_open()) {
std::string line;
while (std::getline(file, line)) {
content += line + "\n"; // добавляем каждую строку с переводом строки
}
file.close();
}
return content;
}
Re: чтение файла
Добавлено: 05 июн 2025, 15:13
ya
Чтобы прочитать бинарный файл в переменную типа std::string, можно использовать следующий подход:
Открыть файл в бинарном режиме (std::ios::binary).
Переместить указатель чтения в конец файла (seekg), чтобы определить его размер.
Зарезервировать место в std::string.
Вернуться в начало файла (seekg), считать все байты в строку.
Код: Выделить всё
#include <fstream>
#include <string>
std::string readBinaryFile(const std::string& filename)
{
// Открываем файл в бинарном режиме
std::ifstream file(filename, std::ios::binary);
if (!file) {
// Обработка ошибки: можно вернуть пустую строку или выбросить исключение
return "";
}
// Перемещаемся в конец файла, чтобы узнать его размер
file.seekg(0, std::ios::end);
std::size_t size = file.tellg();
// Создаем строку достаточного размера
std::string buffer(size, '\0');
// Возвращаемся в начало файла
file.seekg(0, std::ios::beg);
// Читаем весь файл в строку
file.read(&buffer[0], size);
return buffer;
}
использование
Код: Выделить всё
std::string binaryData = readBinaryFile("path/to/binary/file");
Re: чтение файла
Добавлено: 05 июн 2025, 15:20
ya
чтение текстового файла и чтение бинарного файла
Этот класс предложит два публичных метода:
readTextFile(const std::string& filename) — для чтения текстового файла в std::string.
readBinaryFile(const std::string& filename) — для чтения бинарного файла в std::string.
Код: Выделить всё
#include <fstream>
#include <string>
#include <stdexcept>
class FileReader {
public:
// Чтение текстового файла
std::string readTextFile(const std::string& filename) {
std::ifstream file(filename);
if (!file) {
throw std::runtime_error("Не удалось открыть файл: " + filename);
}
std::string content;
std::string line;
while (std::getline(file, line)) {
content += line + "\n";
}
return content;
}
// Чтение бинарного файла
std::string readBinaryFile(const std::string& filename) {
std::ifstream file(filename, std::ios::binary);
if (!file) {
throw std::runtime_error("Не удалось открыть файл: " + filename);
}
// Определение размера файла
file.seekg(0, std::ios::end);
std::size_t size = file.tellg();
file.seekg(0, std::ios::beg);
// Чтение файла в строку
std::string buffer(size, '\0');
file.read(&buffer[0], size);
return buffer;
}
};
использование
Код: Выделить всё
int main() {
FileReader fr;
try {
// Чтение текстового файла
std::string textData = fr.readTextFile("textfile.txt");
// Обработка textData...
// Чтение бинарного файла
std::string binData = fr.readBinaryFile("binaryfile.bin");
// Обработка binData...
} catch (const std::exception& ex) {
std::cerr << "Ошибка: " << ex.what() << std::endl;
}
return 0;
}
Re: чтение файла
Добавлено: 05 июн 2025, 16:48
ya
запись в файл
Код: Выделить всё
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::ofstream outfile("output.txt");
if (!outfile) {
std::cerr << "Не удалось открыть файл для записи.\n";
return 1;
}
// Правильный способ:
outfile << "Первая строка\n";
outfile << "Вторая строка\n";
outfile.close(); // Важно! Закрываем файл, чтобы записать содержимое.
return 0;
}