1 2 |
//Для старых компиляторов #include <fstream.h> |
1 2 3 |
//Для современных компиляторов #include <fstream> using namespace std; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
//Borland C++ 3.1 Чтение строчки из текстового файла Листинг #1 #include <fstream.h> #include <conio.h> int main() { clrscr(); char s1[255]; //В массив будет переноситься строка из файла ifstream in("C:\\FromC\\myfile.txt"); //Открываем файл для считывания информации in >> s1; //считываем строку in.close() // Закрываем файл cout << s1; //Выводим значение s1 на экран cin.get(); } |
1 |
char s1[255]; //массив для хранения прочтённой строки из файла |
1 |
cin >> x; |
1 |
in >> s1; |
1 2 3 4 |
//Псевдокод записи ofstream имя_объекта(Имя файла); //имя объекта, выполняющего роль файла имя_объекта << "Записываемая строка"; имя_объекта.close(); |
1 2 3 4 |
//Псевдокод чтения ifstream имя_объекта(Имя файла); //имя объекта, выполняющего роль файла имя_объекта >> (Считываем строку в какую-нибудь переменную); имя_объекта.close(); |
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 |
//Borland C++ 3.1 Работа с файлом Запись и чтение Листинг #2 #include <fstream.h> #include <iostream.h> #include <conio.h> int main() { clrscr(); // эта строчка только для Borland C++ 3.1 char S1[256]; //Три массива, будут хранить символьные строки, char S2[256]; //введённые с клавиатуры char S3[256]; cout << "input 3 non empty words: \n"; //Введите 3 непустых слова cout << "1: "; cin >> S1; cout << "2: "; cin >> S2; cout << "3: "; cin >> S3; /*РАБОТА С ФАЙЛОМ, ЗАПИСЬ В ФАЙЛ ЗНАЧЕНИЙ ПЕРЕМЕННЫХ*/ ofstream out("C:\\FromC\\myfile.txt"); out << S1 << '\n'; out << S2 << '\n'; out << S3 << '\n'; //или out << S1 << S2 << S3; out.close(); /*КОНЕЦ РАБОТЫ С ФАЙЛОМ*/ *S1 = 0, *S2 = 0, *S3 = 0; //обнуление строк, во избежание недоразумений /*РАБОТА С ФАЙЛОМ, ЧТЕНИЕ ИЗ ФАЙЛА ПЕРЕМЕННЫХ*/ ifstream in("C:\\FromC\\myfile.txt"); in >> S1; in >> S2; in >> S3; //или in >> S1 >> S2 >> S3; in.close(); /*КОНЕЦ РАБОТЫ С ФАЙЛОМ*/ /*Выводим прочитанные строки на экран*/ cout << S1 << '\n'; cout << S2 << '\n'; cout << S3 << '\n'; cin.get(); } |
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 |
//Borland C++ 3.1 Работа с файлом Запись и чтение Листинг #3 #include <fstream.h> #include <iostream.h> #include <conio.h> int main() { clrscr(); const int N = 256; //число символов в массивах char S1[N]; //Три массива, будут хранить символьные строки, char S2[N]; //введённые с клавиатуры char S3[N]; cout << "input 3 non empty words: \n"; //Введите 3 непустых слова cout << "1: "; cin.getline(S1,N); //Используем метод getline cout << "2: "; cin.getline(S2,N); cout << "3: "; cin.getline(S3,N); /*РАБОТА С ФАЙЛОМ, ЗАПИСЬ В ФАЙЛ ЗНАЧЕНИЙ ПЕРЕМЕННЫХ*/ ofstream out("C:\\FromC\\myfile.txt"); out << S1 << '\n'; out << S2 << '\n'; out << S3 << '\n'; //или out << S1 << S2 << S3; out.close(); /*КОНЕЦ РАБОТЫ С ФАЙЛОМ*/ *S1 = 0, *S2 = 0, *S3 = 0; //обнуление строк, во избежание недоразумений /*РАБОТА С ФАЙЛОМ, ЧТЕНИЕ ИЗ ФАЙЛА ПЕРЕМЕННЫХ*/ ifstream in("C:\\FromC\\myfile.txt"); in.getline(S1,N); //Используем метод getline in.getline(S2,N); in.getline(S3,N); //или in >> S1 >> S2 >> S3; in.close(); /*КОНЕЦ РАБОТЫ С ФАЙЛОМ*/ /*Выводим прочитанные строки на экран*/ cout << S1 << '\n'; cout << S2 << '\n'; cout << S3 << '\n'; cin.get(); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
char FNAME[25]; //Переменная, обозначающая имя файла /*РАБОТА С ФАЙЛОМ, ЗАПИСЬ В ФАЙЛ ЗНАЧЕНИЙ ПЕРЕМЕННЫХ*/ ofstream out; //Что-то делаем, например, вводим имя файла из клавиатуры cout << "input file name: "; //Диалог: введите имя файла cin.getline(FNAME,25); //Запоминание имени файла в переменную out.open(FNAME); //Првязка к файлу, имя берётся из переменной out << S1 << '\n'; out << S2 << '\n'; out << S3 << '\n'; //или out << S1 << S2 << S3; out.close(); /*КОНЕЦ РАБОТЫ С ФАЙЛОМ*/ |
могу тебе в продолжение статьи посоветовать — обзавестись функциями (к примеру, функция записи в переменные, функция записи в файл, функция чтения из файла), так же сейчас столкнулся с проблемой — записи файла в одну переменную, т.е ты читаешь построчно и заносишь в разные переменные, а я хочу считать всё в одну переменную с динамическим выделением памяти по переменную…и ещё, что бы повеселиться — создай класс и уже в нём опиши функции обработки данных…если интересно, могу выложить исходник…
сорри, потом только увидел, что ты пошёл намного дальше) очень интересно будет почитать тебя)
http://juniordeveloperad.blogspot.com/2012/04/junior-c-deloper-hi.html Вот, смотри. Я не знаю твоей мотивации и откуда ты берёшь свои азы…К примеру, по ссылке выложены задания по первой части предмета объектно-ориентированное программирование одного ииз Вузов. Могу скинуть на мыло книжку, по которой учаться студенты (её, конечно, не хватает). Про указатели скажу одно — надо разбираться. Для меня они остаются не до конца разобранными, но пользуюсь. Начал их разбирать с си. Там намного больше они участвуют в жизнедеятельности прилаги, там вообще больше ориентированно на работу с памятью. А потом перешёл на с++ и здесь опять же указатели. Многие говорят, что в с# они будут не нужны…Но я всё равно стараюсь разобраться и использовать их по максимуму 🙂 всё приходит с опытом.Кстати, в java нету указателей) Да и работа с памятью облегчена)По поводу контактов — не против, но icq не пользую. скайп скину на почту.
http://alfoot.net/lucik_op.doc книга преподавателей беларуского профильного вуза
Спасибо чувак. Очень интересно написанно, а главное понятно и то, что нужно.
endl — новая строка со сбросом буфера памяти. /n -просто новая строка.
Перед выводом информация обычно накапливается в буфере памяти. Манипулятор endl одновременно с переходом на новую строку осуществляет сброс буфера вывода данных, не дожидаясь момента ,когда он заполнится.
Здравствуйте!
А как считать инфу из файла, если я не знаю заранее сколько в нем строк?
Спасибо, но у меня кучу ошибок выдал, в основном: невозможно переконвертировать из char const в char, также не распознал функции getch и clrscr.
у меня visual c++
ага, помню еще с паскаля про clrscr, значит выкину ее, а вместо getch system ("pause") поставлю, если не путаю. а что делать с
char и const char?
Я тут из учебника переписала такую программу. Она компилируется, зато вообще не понятно как работает. У меня файл открывается и сразу же закрывается, несмотря на то, что я вставила system ("pause"). А в учебнике написано тоже считывает информацию из файла.
видимо для ms visual c++ ваша программа не годится(все ошибки в этих двух строчках const N=256; //Константный размер строки
char *Fname="C:\text.txt";):
c:\documents and settings\мария\рабочий стол\апка\9.файлы\9.файлы.cpp(8): error C4430: missing type specifier — int assumed. Note: C++ does not support default-int
error C2065: ‘"C’ : undeclared identifier
error C2143: syntax error : missing ‘;’ before ‘:’
error C2059: syntax error : ‘:’
error C2017: illegal escape sequence
error C2143: syntax error : missing ‘;’ before ‘.’
error C4430: missing type specifier — int assumed. Note: C++ does not support default-int
error C2065: ‘FName’ : undeclared identifier
да это-то понятно. не понятно откуда они этот файл берут! нигде путь не указан.
У меня ничего не считывает.
А паузы создают, потому что прога должна работать сама собой, прямым открытием, а не через компилятор. Не у всех есть эти компиляторы. Ну это я так просто.
у меня тоже не считывает и этот не считывает. а у вас ваш пример считывает? простите за тавтологию)))
вот я наконец-то пример нашла который все считывает. может кому-то пригодится
Объясните, пожалуйста, значение *"" в строке:
Спасибо.
Ясно, я вроде разобрался. Большое спасибо за ответ.
насчёт этой строки, * это ведь указатель?
При компиляции мне выдаёт такую ошибку "Possibly incorrect assignment"
Через Turbo C++
Из-за этого, как я думаю, из файла не выводится ничегоВ файл записывается, и всё.
Из-за этого, как я думаю, из файла не выводится ничегоВ файл записывается, и всё.
Здравствуйте! У меня вот какая проблема. Начала пробовать работу с файлами уже написала простую программку, решила попробовать что-то посложнее, но передо мной встала проблема, что выдает ошибку на первой же строке не воспринимает #include и, также, ни в какую не воспринимает строку using namespace std; Написано без ошибок, раз десять проверяла, копировала эти строки из другой, работающей программы, все равно выдает ту же ошибку. Почему это происходит и что можно с этим сделать?
А не подскажите как прописать универсальный адрес для папки AppData?
Спасибо Вам Всем, особенно АДМИНУ!!! Мне еще до вас далеко, но я учусь!
Автор, а Вы, случаем, не планируете сделать статью о выводе на печать? Было бы не лишнее, я думаю,учусь по Вашему блогу, а вот появилась лабораторная по теме вывода на печать из файла, а такой темы у Вас и нету, печально 🙁
P.S. или я слепая, ткните носом тогда 😕 😳
Не сразу понял, почему у меня последний пример из статьи ведёт себя неадекватно, но, поковырявшись, всё же разобрался. Итак, по-порядку (в скобках буду указывать номера строк):
(1,2) Зачем дважды подключать библиотеку fstream.h? 🙄
(12, 13) Грубая опечатка! При выводе информации видим только последнюю введённую строку, а дальше сплошной мусор… Подправьте:
(18, 19, 20, 40, 48) Очень часто забываете слэши при переходе на новую строку…
Если всё это подправить, то работает прекрасно. 😀
P.S. В каком-то смысле проверка ваших примеров есть отличное практическое упражнение))
В CODE::BLOCK не работает! Если написать
и
и переменную int i объявлять в каждом цикле или не циклах,а в начале программы,тогда работает.
P.S. В каком-то смысле проверка ваших примеров есть отличное практическое упражнение
Добрый день! Интересует меня следующий вопрос:
При чтении из файла разве не могут возникнуть никакие ошибки? Возвращает ли ifstream какое-нибудь значение при неудачной операции чтения?
Спасибо за ответ!
Здравствуйте!
У меня среда разработки RAD Studio XE3
и тривиальная задача «открыть текстовый файл и по образцу удалить текст, далее сохранить, что осталось»
пытаюсь написать на С++ и Delphi, пока не получается
может сталкивались, ситуация распространенная.
Подскажите хотя-бы направление.
В идеале нужно обработать сотни файлов в оной папке.
Спасибо!
Ещё раз спасибо, буду продолжать.
Разобралась!! Спасибо ОГРОМНОЕ!!
Люди серьезно?
Может я сейчас скажу какую-нибудь глупость но:
1.Неужели нельзя использовать string;
2.Неужели нельзя искать по содержимому строки?
добавление к предыдущему комменту а если быть точным к его части 2. * а не по номеру строки.
Такой вопрос :
пишу значит программу для добавления логинов и паролей в файл используя fsteam и вроде программа выполняется без ошибок, но в файл ничего не добавляет работаю с visual studio 2013 вот код:
внимание вопрос:
в чем проблема?
Файл смотрите не там. Файл там же, где скомпилирован .exe
он как раз там где exe
Я не могу ответить. Есть подозрение, что запускате старую версию программы, где не записывало. У меня 13 не установлена, я смотрел не в студии, не в студии записало.
Замените fstream на ofstream и все заработает 😉
Как сделать поиск по файлу введённых человеком слов?
Можно делать массив слов и искать слова по массиву.
Можно способом, применяемым в статье http://ci-plus-plus-snachala.ru/?p=3679 (там из файла вычитываются слова и сравниваются со словами, хранимыми в другом файле).
такой вопрос, вы задали имена объектов out и in, так каждый должен задавать или все таки их можно называть как хочешь?
Как хочешь. Они как продвинутые переменные.