С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/158: Рейтинг темы: голосов - 158, средняя оценка - 4.87
 Аватар для bol2909
2 / 2 / 0
Регистрация: 29.08.2010
Сообщений: 51

cin чтение из файла C++

10.10.2010, 00:03. Показов 29761. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,который день ищу не могу понять как читать из файла с помошью cin
Допустим есть 2 файла input.txt и output.txt.В файле input.txt лежат 2 числа разделённых пробелом например 6 и 3,как с помошью cin прочитать их и каждое число присвоить переменной например a и b, а потом записать в output.txt.
Интересует именно cin!!!Никаких fopen,scanf и ifstream !!! Ах да, язык c++
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.10.2010, 00:03
Ответы с готовыми решениями:

Как работает cin.peek, cin,get, cin.ignore, cin.clear?
Здравствуйте, товарищи и не товарищи!:) Я только начал изучать C++, а уже использую вещи, которые мне не понятны, и прошу объяснить, как...

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная "защита от дурака" на ввод. Не пойму предназначение cin.get()...

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear()
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до этого c++ не изучал, поэтому возникали некоторые проблемы....

19
365 / 366 / 167
Регистрация: 11.06.2010
Сообщений: 703
10.10.2010, 00:09
cin-ом никак не сможете считать
C++
1
2
3
4
5
6
ifstream file("input.txt");
file>>a>>b;
file.close();
ofstream file("output.txt");
file<<a<<b;
file.close();
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
10.10.2010, 00:13
-comrade-, Ошибаетесь товарисч. Сначала читает cin-ом из файла. Потом возвращаем стандартный cin и читаем с клавиатуры.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <fstream>
#include <string>
#include <iostream>
 
int main()
{
    std::streambuf* backup;
    std::string Str;
    backup=std::cin.rdbuf();
    std::ifstream ifs("Test.txt");
    std::cin.rdbuf(ifs.rdbuf());
    std::getline(std::cin, Str);
    std::cout<<Str<<'\n';
    std::cin.rdbuf(backup);
    std::cin>>Str;
    std::cout<<Str<<'\n';
    return 0;
}
Конкретно по данному.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <fstream>
 
int main()
{
     std::ifstream ifs("input.txt");
     std::cin.rdbuf(ifs.rdbuf());
     int a, b;
     std::cin>>a>>b;
     ifs.close();
     std::ofstream ofs("output.txt");
     std::cout.rdbuf(ofs.rdbuf());
     std::cout<<a<<' '<<b;
     ofs.close();
     return 0;
}
1
 Аватар для bol2909
2 / 2 / 0
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 00:18  [ТС]
Цитата Сообщение от -comrade- Посмотреть сообщение
ifstream file("input.txt"); file>>a>>b; file.close(); ofstream file("output.txt"); file<<a<<b; file.close();
не работает у вас по-моему переприсвоение переменных тоесть вы сначала присваеваете a потом b и потом снова a и в output.txt ничего не сохраняется из за этого,еще может быть потому что у меня там цифры разеделены пробелом короче не работает



Цитата Сообщение от -comrade- Посмотреть сообщение
cin-ом никак не сможете считать
я думаю ,что можно давно просто делал

Добавлено через 2 минуты
Цитата Сообщение от Lavroff Посмотреть сообщение
#include <fstream> #include <string> #include <iostream> int main() { std::streambuf* backup; std::string Str; backup=std::cin.rdbuf(); std::ifstream ifs("Test.txt"); std::cin.rdbuf(ifs.rdbuf()); std::getline(std::cin, Str); std::cout<<Str<<'\n'; std::cin.rdbuf(backup); std::cin>>Str; std::cout<<Str<<'\n'; return 0; }
не совсем понял т.к. намудренно программа должна всего лишь с помощью cin считать 2 числа из файла разделённых пробелом и присвоить их 2 переменным а потом записать в файл output.txt ,думаю можно как то попроще?

Добавлено через 56 секунд
Цитата Сообщение от Lavroff Посмотреть сообщение
и читаем с клавиатуры.
читать с клавы там не надо)
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
10.10.2010, 00:20
bol2909, Гм. Ну rdbuf просто поток переводит на файл. Можно через freopen. Но это как бэ Си.
1
 Аватар для bol2909
2 / 2 / 0
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 00:21  [ТС]
Цитата Сообщение от Lavroff Посмотреть сообщение
#include <iostream> #include <fstream> int main() { std::ifstream ifs("input.txt"); std::cin.rdbuf(ifs.rdbuf()); int a, b; std::cin>>a>>b; ifs.close(); std::ofstream ofs("output.txt"); std::cout.rdbuf(ofs.rdbuf()); std::cout<<a<<' '<<b; return 0; }
спасибо попробую

Добавлено через 37 секунд
rdbuf не очень понял можете объяснить что это такое по конкретнее)
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
10.10.2010, 00:22
bol2909, rdbuf
1
 Аватар для bol2909
2 / 2 / 0
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 00:23  [ТС]
а на русском есть?)
кстати я попробовал работает спасибо
0
365 / 366 / 167
Регистрация: 11.06.2010
Сообщений: 703
10.10.2010, 00:27
bol2909, вот ваша задача:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <fstream>
 
using namespace std; 
 
int main()
{
    int a,b;
    ifstream file1("d:\\input.txt");
    file1>>a>>b;
    file1.close();
    ofstream file2("d:\\output.txt");
    file2<<a<<" "<<b;
    file2.close();
    return 1;
}
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
10.10.2010, 00:29
bol2909, На русском нормальной инфы нету. Вообщем, если вкратце и если я правильно понял, то rdbuf связывает поток с тем, что указано в параметрах. Допустим тут:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <fstream>
 
int main()
{
     std::ifstream ifs("input.txt");//Файл
     std::cin.rdbuf(ifs.rdbuf());//Перенаправили стандартный ввод на ввод из файла
     int a, b;
     std::cin>>a>>b;//Считали из файла значения, положили в две переменные
     ifs.close();
     std::ofstream ofs("output.txt");//Открыли второй файл
     std::cout.rdbuf(ofs.rdbuf());//Перенаправили стандартный вывод на вывод в файл
     std::cout<<a<<' '<<b;//Вывели
     ofs.close();
     return 0;
}
Добавлено через 53 секунды
-comrade-, Вам как бэ не намекает?

Цитата Сообщение от bol2909 Посмотреть сообщение
Интересует именно cin!!!Никаких fopen,scanf и ifstream !!!
1
 Аватар для bol2909
2 / 2 / 0
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 00:31  [ТС]
Цитата Сообщение от -comrade- Посмотреть сообщение
#include <fstream> using namespace std; int main() { int a,b; ifstream file1("d:\\input.txt"); file1>>a>>b; file1.close(); ofstream file2("d:\\output.txt"); file2<<a<<" "<<b; file2.close(); return 1; }
это более понятно спасибо))

Добавлено через 1 минуту
Цитата Сообщение от Lavroff Посмотреть сообщение
-comrade-, Вам как бэ не намекает?
Цитата Сообщение от bol2909 Посмотреть сообщение
Интересует именно cin!!!Никаких fopen,scanf и ifstream !!!
да ладно просто,хотелось именно cin, но если легче с другими то можно и с ними всем спасибо)))
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
10.10.2010, 07:27
Для разнообразия:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string>
 
int main()
{
    std::string str;
    std::cin >> str;
    
    std::cout << "Следующая строка прочитана из файла: " << str << std::endl;
}
Лог консоли:
Code
1
2
./a.out < file.txt
Следующая строка прочитана из файла: читаемая_строка_из_файла
1
 Аватар для bol2909
2 / 2 / 0
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 12:02  [ТС]
./a.out < file.txt дак у меня вроде не linux,я на visual studio 2010 работаю

Добавлено через 34 секунды
Цитата Сообщение от fasked Посмотреть сообщение
./a.out < file.txt
Дак у меня вроде не llinux я на visual studio работаю)
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
10.10.2010, 12:23
Цитата Сообщение от bol2909 Посмотреть сообщение
Дак у меня вроде не llinux я на visual studio работаю
из командной строки можно абсолютно так же запускать и *.exe файлы, если я не ошибаюсь.
Code
1
myprogramm.exe < file.txt
1
 Аватар для bol2909
2 / 2 / 0
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 12:27  [ТС]
а понял то есть мне надо при включении программы самому прописать путь к файлу да?
если так то не очень подходит нужно чтобы в коде уже был записан путь
0
 Аватар для xlxndr
57 / 9 / 4
Регистрация: 14.06.2013
Сообщений: 129
05.07.2013, 02:46
Читать из файла с помощью CIN конкретно можно так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
# include <iostream>
# include <cstdlib>
# include <cstdio>
using namespace std;
 
main()
{
   string a;
   freopen ("C:\\input.txt", "r", stdout);  //переключаем поток на ввод из файла
   cin >> a;                                //вводим из файла
 
   fclose (stdout);
}
0
39 / 39 / 24
Регистрация: 13.05.2010
Сообщений: 282
Записей в блоге: 1
05.07.2013, 09:06
Цитата Сообщение от xlxndr Посмотреть сообщение
Читать из файла с помощью CIN конкретно можно так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
# include <iostream>
# include <cstdlib>
# include <cstdio>
using namespace std;
 
main()
{
   string a;
   freopen ("C:\\input.txt", "r", stdout);  //переключаем поток на ввод из файла
   cin >> a;                                //вводим из файла
 
   fclose (stdout);
}
stdout Это же запись

Вот так надо делать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
int main()
{
   fstream("input.txt", "r", stdin);
   fstream("output.txt", "w", stdout);
 
   int a, b;
   cin >> a >> b;
   cout << a + b;
 
   return 0;
}
0
 Аватар для xlxndr
57 / 9 / 4
Регистрация: 14.06.2013
Сообщений: 129
05.07.2013, 12:59
Да, там stdin нужно было написать...

C
1
2
3
4
5
6
7
8
9
10
11
12
13
# include <iostream>
# include <cstdlib>
# include <cstdio>
using namespace std;
 
main()
{
   string a;
   freopen("C:\\input.txt", "r", stdin);  //переключаем поток на ввод из файла
   cin >> a;                              //вводим из файла
 
   fclose (stdin);
}
а fstream - это класс, а не функция... и с помощью такого способа используется не CIN И COUT, а имя объекта fstream.

Добавлено через 4 минуты
Если использовать объект fstream, тогда так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
    char buff[50];                                   //декларируем массив для промежуточного хранения текста
 
    ofstream outfile("myfile.txt");                  //создаем объект класса ofstream и связываем его с файлом mytext.txt
    outfile << "Этот текст будет в файле" << endl;   //записываем текст в файл
    outfile.close();                                 //отделяем файл от объекта outfile (закрываем файл)
 
    ifstream infile("myfile.txt");                   //создаем объект класса ifstream и связываем его с файлом mytext.txt
 
    infile.getline(buff,40);                         //считываем всю строку с ТОГО МЕСТА, где мы остановились
    cout << buff << endl;                            //выводим эту строку
    infile.close();                                  //закрываем файл
}
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
05.07.2013, 13:03
Уважаемые некропостеры, тут требовалось организовать ввода cin'ом без fopen, scanf и ifstream.
0
39 / 39 / 24
Регистрация: 13.05.2010
Сообщений: 282
Записей в блоге: 1
05.07.2013, 13:35
xlxndr, точно, попутал с freopen
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.07.2013, 13:35
Помогаю со студенческими работами здесь

Чтение символов из cin в буфер в цикле
Привет! Нужно считать строки из консоли, но что-то идёт не так. while (true) { Strings.push_back(yury::BasicString()); ...

Чтение последовательности чисел из cin в массив
Добрый вечер. Есть код: vector&lt;unsigned int&gt; block; while (!bGood) { counter=0; cout&lt;&lt;&quot;\r\nEnter ciphertext: &quot;; ...

Cin, чтение с конца полученного потока
Происходит ввод с клавиатуры последовательности чисел разделенных пробелами, нужно извлечь из этого потока последнее значение. Как?

cin из файла - как?
именно CIN! Никаких там fstream'ов и fopen... То есть как сделать так, чтобы программа работала: cin &gt;&gt; i &gt;&gt; j; ...

Метод getline(cin, m) не срабатывает без cin.ignore() / Ревью кода
Почему в моем случае getline(cin, m) не срабатывает без cin.ignore() ? Если по коду есть какие-нибудь замечания, то просьба написать что не...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru