1 2 |
#include <iostream> //для работы с клавиатурой #include <fstream> //для работы с файлами |
1 2 3 4 5 6 7 8 9 10 11 |
//Листинг #1 clang Работа с текстовым файлом #include <iostream> //для работы с клавиатурой #include <fstream> //для работы с файлами using namespace std; int main(){ ofstream f1; //переменная f1 отвечает за запись в файл ifstream f2; //переменная f2 отвечает за чтение файла } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//Листинг #2.1 clang Работа с текстовым файлом #include <iostream> //для работы с клавиатурой #include <fstream> //для работы с файлами using namespace std; int main(){ ofstream f1; //переменная f1 отвечает за запись в файл ifstream f2; //переменная f2 отвечает за чтение файла f1.open("myfile"); //Открываем файл для записи f1 << "Hello, world"; //Записываем в файл текст f1.close(); //закрываем открытый файл } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//Листинг #2.2 clang Работа с текстовым файлом в стиле C #include <stdio.h> using namespace std; int main(){ FILE *f1; FILE *f2; f1 = fopen("myfile_C.txt", "w"); //открываем файл для записи (w оначает write) fputs("Hello, world!!!", f1); //записываем строку в файл fclose(f1); //закрываем файл } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//Листинг #3.1 clang Работа с текстовым файлом в стиле C++ #include <iostream> //для работы с клавиатурой #include <fstream> //для работы с файлами using namespace std; int main(){ ofstream f1("myfile"); //переменная f1 отвечает за запись в файл myfile ifstream f2("myfile"); //переменная f2 отвечает за чтение файла myfile f1 << "Hello, world"; //Записываем в файл текст f1.close(); //закрываем открытый файл } |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//Листинг #3.2 clang Работа с текстовым файлом в стиле C #include <stdio.h> using namespace std; int main(){ FILE *f1 = fopen("myfile_C.txt", "w"); //открываем файл для записи (w оначает write); FILE *f2; fputs("Hello, world!!!", f1); //записываем строку в файл fclose(f1); //закрываем файл } |
1 2 3 4 5 |
int main(){ int a(10); //приблизительно то же самое, только здесь это не конструктор, //но поведение как у конструктора //переменная "а" инициализируется значением 10 } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//Листинг #4 clang ofstream С++ по умолчанию стирает данные #include <iostream> //для работы с клавиатурой #include <fstream> //для работы с файлами using namespace std; int main(){ ofstream f1("myfile"); //переменная f1 отвечает за запись в файл myfile ifstream f2("myfile"); //переменная f2 отвечает за чтение файла myfile /* СЕЙЧАС ФАЙЛ УЖЕ ЗАПИСАН, ПОКА ЧТО ЭТИ СТРОКИ НЕ НУЖНЫ f1 << "Hello, world"; //Записываем в файл текст f1.close(); //закрываем открытый файл */ char S[255]; //строка в 255 символов. В неё мы будем запоминать строку из файла f2 >> S; f2.close(); //закрываем файл после использования cout << S << '\n'; //текст в файле оказался стёрт, поэтому ничего не вывелось } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//Листинг #4 clang ofstream С++ по умолчанию стирает данные #include <iostream> //для работы с клавиатурой #include <fstream> //для работы с файлами using namespace std; int main(){ ofstream f1("myfile"); //переменная f1 отвечает за запись в файл myfile ifstream f2("myfile"); //переменная f2 отвечает за чтение файла myfile f1 << "Hello, world"; //Записываем в файл текст f1.close(); //закрываем открытый файл char S[255]; //строка в 255 символов. В неё мы будем запоминать строку из файла f2 >> S; f2.close(); //закрываем файл после использования cout << S << '\n'; //текст в файле оказался стёрт, поэтому ничего не вывелось } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
//Листинг #5 clang работа с файлом #include <iostream> //для работы с клавиатурой #include <fstream> //для работы с файлами using namespace std; int main(){ ifstream f1("myfile"); ofstream f2; char S[255]; if (f1.is_open()){ //Проверяем открыт ли файл f1 >> S; //если открыт, записываем значение в S cout << S << '\n'; //выводим S на экран } else { //Если же не открыт, пробуем записать в файл значение f2.open("myfile"); //связываем f2 с файлом f2 << "Hello, world"; //записываем в f2 значение (это значение транзитом уйдёт в файл) } } |
1 2 3 4 |
if (!f1.is_open()){ //Проверяем открыт ли файл cerr << "File not found" << '\n'; //тут выход из программы, функции, цикла и т. п. } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
//Листинг #6 clang работа с файлом #include <iostream> //для работы с клавиатурой #include <fstream> //для работы с файлами using namespace std; int main(){ ifstream f1("myfile"); ofstream f2; char S[255]; if (f1.is_open()){ f1 >> S; //считали первую порцию cout << S << '\n'; //выводим S на экран f1 >> S; //считали вторую порцию cout << S << '\n'; //выводим S на экран } else { f2.open("myfile"); f2 << "Hello, world"; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//Листинг #7 clang работа с файлом #include <iostream> //для работы с клавиатурой #include <fstream> //для работы с файлами using namespace std; int main(){ ifstream f1("myfile"); ofstream f2; char S[255]; if (f1.is_open()){ //Проверяем открыт ли файл while (f1 >> S){ //До тех пор, пока порции попадают в массив S cout << S << '\n'; //выводим на экран словесную порцию } } else { //Если же не открыт, пробуем записать в файл значение f2.open("myfile"); //связываем f2 с файлом f2 << "Hello, world"; //записываем в f2 значение (это значение транзитом уйдёт в файл) } } |
1 2 |
cin.getline(S, 255); //в строку S запишется максимум 255 символов, вводимых с клавиатуры f.getline(S, 255); //в строку S запишется максимум 255 символов, взятых из файлового объекта f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
//Листинг #8.1 clang работа с файлом читаем строку #include <iostream> #include <fstream> #include <string> //для самостоятельной getline using namespace std; int main(){ ifstream f1("myfile"); ofstream f2; string S; if (f1.is_open()){ while (getline(f1, S)){ //До тех пор, пока строка файла приходит в строку S cout << S << '\n'; //выводим на экран словесную очередную строку } } else { f2.open("myfile"); f2 << "Hello, world"; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
//Листинг #8.2 clang работа с файлом читаем строку #include <iostream> #include <fstream> using namespace std; int main(){ ifstream f1("myfile"); ofstream f2; char S[255]; if (f1.is_open()){ while (f1.getline(S, 255)){ //До тех пор, пока строка файла приходит в строку S cout << S << '\n'; //выводим на экран словесную очередную строку } } else { f2.open("myfile"); f2 << "Hello, world"; } } |
1 2 3 4 5 6 7 8 9 10 11 12 |
//Листинг #9.1 clang #include <iostream> using namespace std; int main(){ char S[255]; cin.getline(S, 255); //Считать значение с клавиатуры cout << S << '\n'; //Вывести значение на экран } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//Листинг #9.2 clang #include <fstream> #include <iostream> //для cout using namespace std; int main(){ char S[255]; ifstream f1; ofstream f2; //связывание f1 с каким-то файлом f1.getline(S, 255); //считать значение с файла f1 cout << S << '\n'; //Вывести значение на экран } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
//Листинг #10.1 clang Работа с текстовым файлом в стиле C #include <stdio.h> #include <iostream> using namespace std; int main(){ FILE *f1; // чтобы не стереть данные, сразу для записи не открываем FILE *f2 = fopen("myfile_C.txt", "r"); //открываем файл для чтения (r) char S[255]; //строка, в которую будем записывать строку файла if (f2 == NULL){ cerr << "file not found\n"; //Если файл не был открыт, всообщаем об этом return 0; //завершаем программу (или можно ещё фрагмент программы) /* вместо завершения можно здесь выполнить код, создающий файл, тогда return надо убрать */ } else{ fscanf(f2, "%s", S); //читаем строку. cout << S << '\n'; } fclose(f1); //закрываем файл } |
1 |
FILE *f2 = fopen("myfile_C.txt", "w"); //открываем файл для записи (w) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
//Листинг #10.2 clang Работа с текстовым файлом в стиле C #include <stdio.h> #include <iostream> using namespace std; int main(){ FILE *f1; // чтобы не стереть данные, сразу для записи не открываем FILE *f2 = fopen("myfile_C.txt", "r"); //открываем файл для чтения (r) char S[255]; //строка, в которую будем записывать строку файла char EMPTY_FILE = 0; /*ПРОВЕРКА ФАЙЛА НА ПУСТОТУ*/ fseek(f2,0,SEEK_END); long pos = ftell(f2); if (pos>0) { // файл непустой. rewind(f2); //возвращаем курсор в начало файла } else { EMPTY_FILE = 1; //обозначаем истинность утверждения "файл пустой" cout << "OK\n"; } /*КОНЕЦ ПРОВЕРКИ НА ПУСТОТУ*/ if (f2 == NULL || EMPTY_FILE){ cerr << "file not found\n"; //Если файл не был открыт, всообщаем об этом cout << "file will create\n"; //сообщаем, что файл будет создан f1 = fopen("myfile_C.txt","w"); fputs("Hello, world!", f1); fputs("str2", f1); } else{ fscanf(f2, "%s", S); cout << S << '\n'; } fclose(f1); //закрываем файл } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
//Листинг #10.3 clang Работа с текстовым файлом в стиле C #include <stdio.h> #include <iostream> using namespace std; int main(){ const char* PATH = "myfile_C.txt"; //отвели имени файла собственную константу FILE *f1; // чтобы не стереть данные, сразу для записи не открываем FILE *f2 = fopen(PATH, "r"); //открываем файл для чтения (r) char S[255]; //строка, в которую будем записывать строку файла char EMPTY_FILE = 0; //признак существования пустого файла if (f2){ /*ПРОВЕРКА ФАЙЛА НА ПУСТОТУ*/ fseek(f2,0,SEEK_END); long pos = ftell(f2); if (pos>0) { // файл непустой. rewind(f2); //возвращаем курсор в начало файла } else { EMPTY_FILE = 1; //обозначаем истинность утверждения "файл пустой" } /*КОНЕЦ ПРОВЕРКИ НА ПУСТОТУ*/ } if (f2 == NULL || EMPTY_FILE){ cerr << "file not found\n"; //Если файл не был открыт, сообщаем об этом cout << "file will create\n"; //сообщаем, что файл будет создан f1 = fopen(PATH,"w"); //для указания пути используется константа PATH fputs("Hello, world!\n", f1); fputs("str2\n", f1); fclose(f1); //закрыли файл } /*УБРАЛИ ELSE*/ if (!f2){ //Проверяем, что f2 открыто (то же, что [f2 == NULL] ) f2 = fopen(PATH, "r"); } fscanf(f2, "%s", S); cout << S << '\n'; fclose(f2); //закрываем файл } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
//Листинг #10.3 clang Работа с текстовым файлом в стиле C #include <stdio.h> #include <iostream> using namespace std; int main(){ const char* PATH = "myfile_C.txt"; //отвели имени файла собственную константу FILE *f1; // чтобы не стереть данные, сразу для записи не открываем FILE *f2 = fopen(PATH, "r"); //открываем файл для чтения (r) char S[255]; //строка, в которую будем записывать строку файла char EMPTY_FILE = 0; //признак существования пустого файла if (f2){ /*ПРОВЕРКА ФАЙЛА НА ПУСТОТУ*/ fseek(f2,0,SEEK_END); long pos = ftell(f2); if (pos>0) { // файл непустой. rewind(f2); //возвращаем курсор в начало файла } else { EMPTY_FILE = 1; //обозначаем истинность утверждения "файл пустой" } /*КОНЕЦ ПРОВЕРКИ НА ПУСТОТУ*/ } if (f2 == NULL || EMPTY_FILE){ cerr << "file not found\n"; //Если файл не был открыт, сообщаем об этом cout << "file will create\n"; //сообщаем, что файл будет создан f1 = fopen(PATH,"w"); //для указания пути используется константа PATH fputs("Hello, world!\n", f1); fputs("str2\n", f1); fclose(f1); //закрыли файл } /*УБРАЛИ ELSE*/ if (!f2){ f2 = fopen(PATH, "r"); } /*ЧИТАЕМ ВСЕ СТРОКИ*/ while ( fscanf(f2, "%s", S) != EOF){ cout << S << '\n'; }; fclose(f2); //закрываем файл } |
1 2 3 4 |
/*ЧИТАЕМ ВСЕ СТРОКИ*/ while(fgets(S, sizeof(S), f2) != NULL){ cout << ++i << " " << S; }; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
//Листинг #10.4 clang Работа с текстовым файлом в стиле C #include <stdio.h> #include <iostream> using namespace std; int main(){ const char* PATH = "myfile_C.txt"; //отвели имени файла собственную константу FILE *f1; // чтобы не стереть данные, сразу для записи не открываем FILE *f2 = fopen(PATH, "r"); //открываем файл для чтения (r) char S[255]; //строка, в которую будем записывать строку файла char EMPTY_FILE = 0; //признак существования пустого файла if (f2){ /*ПРОВЕРКА ФАЙЛА НА ПУСТОТУ*/ fseek(f2,0,SEEK_END); long pos = ftell(f2); if (pos>0) { // файл непустой. rewind(f2); //возвращаем курсор в начало файла } else { EMPTY_FILE = 1; //обозначаем истинность утверждения "файл пустой" } /*КОНЕЦ ПРОВЕРКИ НА ПУСТОТУ*/ } if (f2 == NULL || EMPTY_FILE){ cerr << "file not found\n"; //Если файл не был открыт, сообщаем об этом cout << "file will create\n"; //сообщаем, что файл будет создан f1 = fopen(PATH,"w"); //для указания пути используется константа PATH fputs("Hello, world!\n", f1); fputs("str2\n", f1); fclose(f1); //закрыли файл } /*УБРАЛИ ELSE*/ if (!f2){ f2 = fopen(PATH, "r"); } /*ЧИТАЕМ ВСЕ СТРОКИ*/ while(fgets(S, sizeof(S), f2) != NULL){ cout << S; }; if (f2){ fclose(f2); //закрываем файл } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//Листинг #11.1 clang Работа с текстовым файлом Задание полного пути #include <fstream> #include <iostream> using namespace std; int main(){ const char* PATH = "A:/cpp/myfile"; //отвели имени файла собственную константу ifstream fin; ofstream fout; fout.open(PATH); if (!fout.is_open()){ cerr << "error\n"; } fout.close(); } |
Спасибо огромное за урок!!Ваш урок очень сильно мне помог)
Говно это все.
Херня, а не урок.
Вася, шел бы ты отсюда. Автор красавчик. Так держать
Прошу прощения, уважаемый, но использование «using namespace std;» не разумно и бывает опасно в проектах. А ещё это говорит о не самом лучшем вкусе программиста.
Подскажите, как считать информацию с нескольких файлов?
Вот к примеру я записал один файл и считал с него 2 строки. Затем я захотел прочитать другой файл(уже существующий) и вывести его информацию на экран. Но выдает ошибку.
Ошибки:
[C++ Error] UnitText.cpp(24): E2238 Multiple declaration for 'in'
[C++ Error] UnitText.cpp(19): E2344 Earlier declaration of 'in'
Как-то он фальшива выдал мой код. Вообщем на повторный запрос чтения файл мой компил ругается. Подскажите как это исправить или что я делаю не правильно?
Спасибо большое! Полезная информация для работы с вашими самостоятельными заданиями.
😎
Самый толковый урок, находил другие, где код в 30 строк и с применением 100500 других библиотек, хотя мне нужно было лишь вывести данные. Огромное спасибо!
Большое спасибо за урок!
Получилось скомпилить код в линуксе с небольшими изменениями. Если кому интересно то такой код работает в линуксе
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ofstream out(«/home/dima/Develop/lp/tmp/config_test.ini»); //ofstream — это тип данных. Внутри скобок параметр, принимаемый конструктором объявленного объекта out<<«HelloWorld<<«\n»; //Записываем первую строчку
out<<«UraRabotaet!!!»; //Записываем вторую строчку
out.close(); //Закрываем файл
return 0;
}
Этот код должен работать если его вставлять в готовую программу между заголовочными файлами и формой?
Не подскажите, как присвоить значения переменным в начале работы программы, если их значения нужно хранить в файле?
Подскажите, к кому обратиться за помощью в написании программки на с++, краткий смысл — чтение числа из текстового файла, вывод его на лпт-порт, чтение числа с порта, запись в другой текстовый файл, подробнее в личке. Обращение к ЛПТ на с++ нашёл, а с чтением-записью не получается. Учить язык с++ времени нет, основная программа будет на другом языке, который с ЛПТ не дружит и считывать будет из текстовых файлов.
Скажите пожалуйста, как в текстовый файл в определённую строку ввести текст (у меня 57 строк, а мне нужно в 26 или в какую-нибудь другую).
Допиливать надо. мне лень. Можно делать вообще по другому. Но так как условий мало, то берите, что даю.
Добрый вечер, уважаемый автор -реально полезный туториал. У меня вопрос- если нужно считать информацию с одного текстового файла а затем сохранить в другой файл тот же самый текст, но уже разбитый на колонки длиною Х, где икс равен числу которое вводишь сразу после названия (расположения файла в командной строке).
то есть вводишь имя файла и количество знаков (икс) и в новом файле появляются колонки со строками длиною икс. Плюс проблемка так же в том , что пробелы тоже учитываются как знаки
Заранее спасибо,
Простое форматирование.
Какой текст и в каких местах его разбивать на колонки мне откуда знать?
Такой вопрос, а как сделать так, чтобы мы сами в переменую задали путь к файлу в который будем вносить данные?
Только нужно дополнительно проверки делать, если каталога не существует, то не запишет, поэтому либо записывать в уже существующий каталог, либо создавать каталог перед записью.
отличный материал для новичков
Отличная статья