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

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

09.05.2023, 20:09. Показов 992. Ответов 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
Сообщений: 146
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
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
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
6455 / 5657 / 1129
Регистрация: 11.10.2019
Сообщений: 15,073
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
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru