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

Перенаправить поток std::cin на чтение из файла

09.05.2023, 20:09. Показов 912. Ответов 6
Метки cpp (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте друзья.
Подскажите пожалуйста, как прочитать "file.txt" из стандартного ввода std::cin?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.05.2023, 20:09
Ответы с готовыми решениями:

Чтение бинарного файла в поток std::ifstream и вывод в другой бинарный файл std::ofstream (создание копии)
Проверил работу программы на маленькой картинке(744 байт). Все работает. С несколько бОльшими файлами(512КБ) нет. Суть задачи в том,...

Как очистить поток ввода std::cin (консоль)?
Ввожу десять строк. Если строка равна "done", то выход. Проблема в том, что если скопировать эти десять слов и вставить в консоли, то они...

Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream
Здравствуйте! Я хотел начать изучать язык C++. Набрал литературы. Установил Microsoft Visual C++ 2005 Express Edition. Образ диска...

6
6 / 4 / 2
Регистрация: 19.04.2023
Сообщений: 15
09.05.2023, 20:34
Чтобы прочитать содержимое файла "file.txt" из стандартного ввода `std::cin`, можно воспользоваться следующей конструкцией:


C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string>
 
int main() {
    std::string line;
    while (std::getline(std::cin, line)) { // Читаем построчно из стандартного ввода
        std::cout << "Read line: " << line << '\n';
    }
    return 0;
}

Запустив эту программу, вы сможете вводить содержимое файла "file.txt" в стандартный ввод построчно. Чтение завершится при нажатии клавиши `Ctrl+Z` (Windows) или `Ctrl+D` (Unix) для окончания ввода.
0
09.05.2023, 20:40

Не по теме:

artevstudio, как же вы задолбали репостить бред... Вы даже тупой чатгпт интелектом не превосходите.

0
5 / 4 / 3
Регистрация: 22.11.2022
Сообщений: 141
09.05.2023, 20:42  [ТС]
Я сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <string>
#include <iostream>
#include <fstream>
#include <vector>
 
std::string inFile = "file.txt";
std::string line;
 
int main()
{
    std::ifstream in;
    in.open(inFile);
    if (in.is_open())
    {
        std::cout << "Файл открыт" << std::endl;
        while (std::getline(std::cin, line))
        {
            std::cout << line << std::endl;
        }
    }
    in.close();
}
не работает

файл открывается, но не читает.
0
6 / 4 / 2
Регистрация: 19.04.2023
Сообщений: 15
09.05.2023, 20:57
Проблема в том, что у вас программа читает ввод из стандартного потока ввода `std::cin`, а не из файла. Вы открываете файл для чтения, но не используете его. Вам нужно заменить `std::cin` на `in` в операторе `while`:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <string>
#include <iostream>
#include <fstream>
#include <vector>
 
std::string inFile = "file.txt";
std::string line;
 
int main()
{
    std::ifstream in;
    in.open(inFile);
    if (in.is_open())
    {
        std::cout << "Файл открыт" << std::endl;
        while (std::getline(in, line))
        {
            std::cout << line << std::endl;
        }
    }
    in.close();
}

Теперь программа должна правильно читать содержимое файла "file.txt".
1
Модератор
Эксперт С++
 Аватар для zss
13768 / 10961 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
09.05.2023, 21:03
Лучший ответ Сообщение было отмечено Bodden как решение

Решение

Непростое это дело, однако....
https://stackoverflow.com/ques... t-to-files
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
30
31
32
33
34
35
#include <iostream>
#include <fstream>
#include <string>
 
void f()
{
    std::string line;
    while(std::getline(std::cin, line))  //input from the file in.txt
    {
        std::cout << line << "\n";   //output to the file out.txt
    }
}
int main()
{
    std::ifstream in("in.txt");
    std::streambuf *cinbuf = std::cin.rdbuf(); //save old buf
    std::cin.rdbuf(in.rdbuf()); //redirect std::cin to in.txt!
 
    std::ofstream out("out.txt");
    std::streambuf *coutbuf = std::cout.rdbuf(); //save old buf
    std::cout.rdbuf(out.rdbuf()); //redirect std::cout to out.txt!
 
    std::string word;
    std::cin >> word;           //input from the file in.txt
    std::cout << word << "  ";  //output to the file out.txt
 
    f(); //call function
 
 
    std::cin.rdbuf(cinbuf);   //reset to standard input again
    std::cout.rdbuf(coutbuf); //reset to standard output again
 
    std::cin >> word;   //input from the standard input
    std::cout << word;  //output to the standard input
}
2
фрилансер
 Аватар для Алексей1153
6440 / 5634 / 1127
Регистрация: 11.10.2019
Сообщений: 14,981
09.05.2023, 21:41
zss, кстати, когда я прочитал название темы, на ум сразу вылезло Сишное freopen - я таким пользовался. А вот в C++ не приходилось, даже не задумывался Да, чуть больше движений
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.05.2023, 21:41
Помогаю со студенческими работами здесь

конец файла в операторе while(std::cin>>value)
Добрый вечер! Помогите пожалуйста разобраться. Начал изучать язык по книге &quot;С++ Базовый курс 5 издание&quot;, написал код из...

std::cin, eof не всегда принимается как признак конца файла
std::string text; char ch = 0; while(!std::cin.get(ch).eof()){ text.append(1, ch); } Ввожу в консоль в Windows: ...

два вопроса по С++,вопрос про заг.файла и поток cin
1.У меня есть заголовoчный файл,созданный в проекте А,в проекте В он нужен,как его туда добавить?Надо самим файл из папку в папку...

cin чтение из файла C++
Здравствуйте,который день ищу не могу понять как читать из файла с помошью cin Допустим есть 2 файла input.txt и output.txt.В файле...

Можно ли как-то убрать или заменить std:: в строке std::getline(cin, str);?
Нужно программа без std:: #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;conio.h&gt; #include &lt;iomanip&gt; #include &lt;string&gt;...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru