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

Считывание текста с файла методом getchar

02.02.2016, 19:44. Показов 7150. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу считать текст с файла и вывести на экран но по моему у меня ошибка в коде.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
std::ifstream ifs("in.txt");
 
    if(ifs.is_open())
    {
       int s;
           while ((s = getchar()) != EOF)
           {
               putchar(s);
           }
        
            ifs.close();
        }
   else
std::cerr << "Unable to open file in.txt" << std::endl;
И как записать данные с файла в массив char или string?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.02.2016, 19:44
Ответы с готовыми решениями:

Функцию getchar нужно заменить на считывание строки до пробела
функцию getchar нужно заменить на считывание строки до пробела, помогите...даже не знаю с чего начать...

Считывание текста из файла
Программа считывания текста из файла.

Считывание текста из файла
Собственно, задача такая: есть файл info.txt в ней строки такого формата $параметр_1$параметр_2$параметр_3$...$параметр_n есть...

14
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
02.02.2016, 20:13
Цитата Сообщение от ikudesnik Посмотреть сообщение
И как записать данные с файла в массив char или string?
вместо
Цитата Сообщение от ikudesnik Посмотреть сообщение
putchar(s);
и записывайте в массив, только массив объявите сначала
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
02.02.2016, 20:15
Цитата Сообщение от ikudesnik Посмотреть сообщение
C++
1
while ((s = getchar()) != EOF)
C++
1
while ((s = ifs.get()) != EOF)
1
 Аватар для Termit779
79 / 60 / 19
Регистрация: 22.11.2015
Сообщений: 193
02.02.2016, 20:42
char

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
/************************************************************/
    ifstream ifs("in.txt", ios_base::binary);
    if (!ifs) cout << "Error. Could not open" << endl;  
    char buff;
    char mass[1000];
    int count_mass = 0;
    while (ifs.get(buff))
    {   
        //if (ifs.eof()) break;
        mass[count_mass] = buff;
        ++count_mass;
    }   
    for (int i = 0; i < count_mass; i++)
    {
        cout << mass[i];
    }
string

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
/************************************************************/
    vector<string> str;
    string buff;
    ifstream ifs("in.txt", ios_base::binary);
    if (!ifs) cout << "Error. Could not open" << endl;  
 
    while (getline(ifs, buff))
    {   
        str.push_back(buff);
    }   
    for (int i = 0; i < str.size(); i++)
    {
        cout << str[i];
    }
1
0 / 0 / 0
Регистрация: 02.08.2015
Сообщений: 124
03.02.2016, 05:59  [ТС]
Обратил внимание на статью habrahabr.ru/post/246257 , там описываются способы через getchar и getchar_unlocked как все токи через их?
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
03.02.2016, 07:39
ikudesnik, там перенаправление потока ввода из файла.
1
0 / 0 / 0
Регистрация: 02.08.2015
Сообщений: 124
03.02.2016, 10:29  [ТС]
А есть подобные исследование в коде для быстрой записи и считывание с файла?
Может что посоветуете?
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
03.02.2016, 15:19
ikudesnik, да istream::read и так работает максимально быстро. Основная проблема в том, как вы будете парсить результат.

Если уж на то пошло, то чтение через operator >> тоже не самое медленное, по той простой причине, что синхронизация, которая по статье затормозила чтение до ужаса, в файловых потоках отключена...
1
 Аватар для Termit779
79 / 60 / 19
Регистрация: 22.11.2015
Сообщений: 193
03.02.2016, 15:27
FraidZZ, я правильно понимаю, что данные файла можно считать в стек (если размер стека позволяет), считать в объект динамической памяти (в "кучу") и работать непосредственно с данными файла через API OS? Есть ли ошибки в терминологии которую я привожу?
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
03.02.2016, 15:34
Цитата Сообщение от Termit779 Посмотреть сообщение
данные файла можно считать в стек (если размер стека позволяет)
Можно поблочно, например.

C++
1
2
3
4
5
6
ifstream ifs("example.txt");
const int N = 4096;
char buf[N];
 
ifs.read(buf, N); 
int r = ifs ? n : ifs.gcount(); // в r будет количество считанных символов
Цитата Сообщение от Termit779 Посмотреть сообщение
считать в объект динамической памяти (в "кучу")
Можно с той же оговоркой
C++
1
2
3
4
5
6
ifstream ifs("example.txt");
const int N = 4096;
char * buf = new char[N];
 
ifs.read(buf, N);
int r = ifs ? n : ifs.gcount(); // в r будет количество считанных символов
Цитата Сообщение от Termit779 Посмотреть сообщение
и работать непосредственно с данными файла через API OS?
Не совсем понял, о чём речь. Вызовы WinAPI при работе с файлом, емнип, не требуются.
0
 Аватар для Termit779
79 / 60 / 19
Регистрация: 22.11.2015
Сообщений: 193
03.02.2016, 15:42
FraidZZ, по последнему пункту. Возможно у меня неправильное представление, но. Если файл к примеру размером в гигабайт, и мне необходимо применить к данным файла алгоритм поиска (к примеру), не стану ведь я копировать все данные на "кучу", чтобы осуществить поиск.

или в любом случае мне придется использовать стек для промежуточных результатов?
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
03.02.2016, 15:52
Termit779, так зачем вам читать ВЕСЬ файл? читайте поблочно... я же пример так и привёл. вот алгоритмы обработки этого куска - уже вопрос другой.
1
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
03.02.2016, 18:32
Цитата Сообщение от Termit779 Посмотреть сообщение
Если файл к примеру размером в гигабайт,
Цитата Сообщение от Termit779 Посмотреть сообщение
или в любом случае мне придется использовать стек для промежуточных результатов?
Есть такой метод (API), как мапирование файла: https://msdn.microsoft.com/en-... s.85).aspx
1
 Аватар для Termit779
79 / 60 / 19
Регистрация: 22.11.2015
Сообщений: 193
03.02.2016, 18:51
FraidZZ, nd2, спасибо, разобрался. То, о чем я хотел спросить, есть :
C++
1
fseek( ptrFile , 9 , SEEK_SET );  // изменить позицию на 9 байт относительно начала файла
видимо я неясно выражался. Смысл сего - имитация базы данных.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
03.02.2016, 19:03
Termit779, если используете C++ STL, то уж лучше fstream::seekg
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.02.2016, 19:03
Помогаю со студенческими работами здесь

Считывание текста из файла
Написать программу, которая считывает текст из файла и определяет, сколько в нем слов, состоящих из не более, чем четырех букв. ...

Считывание текста с файла
Здравствйте,нужна программа которая будет считывать текст с файла и выводить его в другой файл.Что то не выходитюПрограмма просто создает...

Считывание текста из файла
Вот собственно такая задачка Некоторый текст состоит из нескольких частей, записанных в отдельных файлах. Имена этих файлов и общий...

Считывание текста из файла
Необходимо написать программу, которая считывает текст из файла и выводит на экран.

Считывание текста из файла
Впервые пишу программу на qt и не могу разобраться с проблемой. Программа шифрует текст по такому принципу: записывает содержимое textEdit...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru