Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 21

Изучение работы с файломи .txt

10.10.2012, 22:43. Показов 1272. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день!
Сейчас изучаю Си/Си++ и вот внезапно надоело работать только с консолью. Хочется входные и выходные данные иметь в файликах .txt. Все бы хорошо, но пристойных мануалов, как это делать, так и не нашла. Обычно либо дают какие-то куски кода с кучей непонятно откуда взятых слов/функций, либо целые фрагменты кода, которые, однако, при компиляции в VS 2012 выдают ошибку.
Просто мечтаю о внятной статье или главе из книги, объясняющей по шагам, как в VS прикрутить работу с блокнотными файлами. Подскажете что-нибудь?
А, еще часто встречаю следующие конструкции: "слово::слово" и "слово.слово". Подскажите, что это, зачем нужно, и где про это почитать доступно. Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.10.2012, 22:43
Ответы с готовыми решениями:

Изучение работы с PDO
Привет. Что лучше читать - http://phpfaq.ru/pdo Или на офсайте документацию про PDO. Ясно, что офдокументация всегда считается лучшей,...

Изучение работы приложений с БД
Здраствуйте, помогите пожалуйста понять как написать приложение которое работает с БД. Немного знаю теорию БД, но на практике никогда не...

изучение работы C++ Builder с базами данных
Всем привет=) Собрался изучать C++ Builder и базы данных, можете вообщем обьяснить что эт такое, зачем оно нужно? Именно обьяснить...

13
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
10.10.2012, 22:49
Литература C++
там достаточно много хороших книжек.
Даже не знаю, стоит ли отвечать на ваши вопросы про "слово::слово" и "слово.слово" - боюсь слишком запутать. Об этом обычно пишут в начале самоучителей.

Для работы с файлами надо подключить библиотеку fstream
затем создать необходимый объект - std::ifstream, std::ofstream или std::fstream
открыть нужный файл с помощью метода open(file_name)
далее можно записывать туда данные и считывать их обратно с помощью операторов << и >>. Будто бы вы работаете с cin/cout
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.10.2012, 14:19
Цитата Сообщение от Detweeted Посмотреть сообщение
Сейчас изучаю Си/Си++
Каким образом изучаете? Наберите в поисковике: потоковый ввод вывод с++ и читайте. Информации в инете полно. Вот здесь, для начала, очень просто объясняется: http://informatics.mccme.ru/mo... php?id=579
0
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 21
11.10.2012, 21:02  [ТС]
Спасибо за пояснения! Изучаю по гуглу/конспектам первого курса и по паре книжек.

А чем freopen отличается от fopen? Они относятся к разным пространствам имен?
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
11.10.2012, 21:05
http://lord-n.narod.ru/downloa... reopen.htm
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.10.2012, 21:19
Цитата Сообщение от Detweeted Посмотреть сообщение
и по паре книжек.
По каким?
Цитата Сообщение от Detweeted Посмотреть сообщение
А чем freopen отличается от fopen?
freopen связывает существующий поток с другим файлом.
0
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 21
11.10.2012, 21:29  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
По каким?
Керниган, Ритчи - базовая часть, Девис (для чайников) - объектно ориентированные штучки.

Цитата Сообщение от Петррр Посмотреть сообщение
Спасибо, сейчас буду разбираться.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.10.2012, 22:08
Цитата Сообщение от Detweeted Посмотреть сообщение
Керниган, Ритчи - базовая часть
Там есть глава: "Ввод и вывод".
0
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 21
11.10.2012, 22:19  [ТС]
Для теста наугад написала код, а он работает почему-то не для строк, а для слов:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//равны ли строки?
 
#define N 20
 
#include <iostream>
#include <string>
#include <stdio.h>
 
 
using namespace std;
 
int main()
{
     freopen ("input.txt","r",stdin);
     freopen ("output.txt","w",stdout);
     char s1[N], s2[N];
     cin >> s1 >> s2;
     if (strcmp(s1, s2))
         cout << "не равны";
     else
         cout << "равны";
     return 0; 
}
Если в файле input оставить два слова, разделенные пробелом, то каждое слово будет восприниматься как строка. Почему так? Ведь строка должна заканчиваться символом /0, а пробел не то же самое, что /0?
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.10.2012, 23:09
cin >> читает до пробела. Если хотите чтение строки, то используйте функции для строкового ввода.

Добавлено через 3 минуты
У вас смесь С и С++. Если испоьзуете iostream, тогда уж используйте и fstream. Если string, то зачем char[]. Читайте в string и сравнивайте.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
     fstream f("input.txt");
     
     string s1, s2;
     getline(getline(f, s1), s2);
     f.close();
 
     f.open("output.txt", ios::out);
     if (s1 != s2)
         f << "не равны";
     else
         f << "равны";
 
     f.close();
 
     cin.get();
     return 0; 
}
1
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 21
12.10.2012, 20:13  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
     getline(getline(f, s1), s2);
Вот это что-то очень подозрительное. Смотрим описание getline: Getline возвращает 1, если запись существует, 0 - если найден конец файла и -1, если появляется ошибка. В качестве аргументов у getline должны быть название строки и лимит символов в строке.
Тут полное несоответствие. И рекурсия непонятно зачем. Поясните?
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2012, 22:00
Цитата Сообщение от Detweeted Посмотреть сообщение
Вот это что-то очень подозрительное. Смотрим описание getline: Getline возвращает 1, если запись существует, 0 - если найден конец файла и -1, если появляется ошибка. В качестве аргументов у getline должны быть название строки и лимит символов в строке.
Тут полное несоответствие. И рекурсия непонятно зачем. Поясните?
Где такое нашли? Есть методы getline() (члены класса istream). Они вызываются объектами класса. Например, cin.getline(char*, int, char = '\n'). А это просто шаблонная функция. Здесь почитатайте: http://www.cplusplus.com/reference/string/getline/ Рекурсии здесь нет.
Эта getline() возвращает поток, т.е. в данном случае: f. Можно написать то же самое, но понятнее:
C++
1
2
getline(f, s1);
getline(f, s2);
1
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 21
14.10.2012, 16:02  [ТС]
А существует возможность начать запись в файл в main(), потом в самом main() вызвать некую функцию, в ней продолжить дозапись файла, потом вернуть в main() и записывать дальше? Какие аргументы мы должны передавать в функцию?
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.10.2012, 17:35
Цитата Сообщение от Detweeted Посмотреть сообщение
Какие аргументы мы должны передавать в функцию?
Поток по ссылке. Например, шесть строк в файле:
C++
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
void func(fstream &f, string &s1, string &s2) // чтение двух строк из файла
{
    getline(getline(f, s1), s2);
}
 
int main()
{
     fstream f("1.txt");
     
     string s1, s2;
     getline(getline(f, s1), s2); // чтение двух строк из файла
     
     func(f, s1, s2);
     cout << s1 << endl << s2 << endl;
     
     getline(getline(f, s1), s2); // чтение двух строк из файла
 
     cout << s1 << endl << s2 << endl;
 
     f.close();
 
     cin.get();
     return 0; 
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.10.2012, 17:35
Помогаю со студенческими работами здесь

Стоит ли начинать изучение работы с 3D графикой
Вопрос для тех, кто разбирается в 3d графике. У меня есть небольшие познания в c# и хотелось бы углубиться в изучение 3d графики, а именно...

Изучение работы с RespApi, SOAP и госуслугами по примерам
Добрый день. Прошу помощи в обучении работы с RespApi и взаимодействию с Гослуслугами по примерам от СМЭВ. Хочу научиться получать...

Изучение принципов работы нейронных сетей и их функциональных возможностей
Здравствуйте, взял нейронную сеть с этого сайта: здесь Суть задания: 1) сконструировать несложную нейронную сеть 2) провести...

Лабораторная работа на изучение основ работы с debug.exe
Ход работы 1. Запишите в отчет тему и цель. 2. В командной строке наберите debug. У вас должно появиться на экране окно отладчика с...

Работа с файломи
Здравствуйте. Нужна программа которая бы делала следующее. У нас есть неопределенное количество файлов. Пользователь с помощью стандартного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 05.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru