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

Чтение файла с русскими символами

25.07.2019, 00:51. Показов 9494. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня задача прочитать файл с русскими символами.
Можно ли это сделать с помощью библиотеки fstream?
И если да, то как?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.07.2019, 00:51
Ответы с готовыми решениями:

Чтение и отображение текстового файла с русскими символами
Все приемчики указанные в разделе русский текст в консоли не проходят SetConsoleCP(1251); SetConsoleOutputCP(1251); setlocale...

Проверка на существование файла с русскими символами в названии
Здравствуйте. Работаю над программой для шифрования файлов. Основную работу сделал, осталось прописать только этот момент. Мне нужно...

Regex с русскими символами
Привет всем! что надо сделать чтобы работала регулярное выражение с русскими буквами ? регулярные выражение пользуюсь из boost...использую...

14
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,077
Записей в блоге: 3
25.07.2019, 06:52
Цитата Сообщение от daneil9 Посмотреть сообщение
У меня задача прочитать файл с русскими символами.
Вы должны уточнить вашу задачу:
Русские символы в какой кодировке представлены в файле?

Цитата Сообщение от daneil9 Посмотреть сообщение
Можно ли это сделать с помощью библиотеки fstream?
для библиотеки fstream без разницы что она будет читать.
Все дело в том как будет представлена прочитанная инфа для ваших глаз.

Цитата Сообщение от daneil9 Посмотреть сообщение
И если да, то как?
например, так:
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
///----------------------------------------------------------------------------|
/// Русский текст должен находится в файле file.txt
/// в кодировке OEM866
///----------------------------------------------------------------------------|
 
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int main()
{   string str;
    ifstream ifs("file.txt"); ///<<<---Проверь наличие этого файла!
 
    if (ifs.is_open())
        cout << "file open" << '\n';
    else
    {   cout << "Error: File not open!" << "\n";
        return 1;
    }
 
    while (!ifs.eof())
    {   getline(ifs, str, '\n');
        std::cout << str << "\n";
    }
 
    ifs.close();
    
    std::cin.get();
    return 0;
}
OEM866 кодировка в консоли стоит по дефолту.
(это будет работать только на русскоязычной версии винды)
1
1 / 1 / 0
Регистрация: 25.07.2019
Сообщений: 42
25.07.2019, 11:07  [ТС]
Спасибо ,но есть ли способ перекодировать файл в OEM866 без его изменения как под windows так и под linux?
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
25.07.2019, 11:54
daneil9, man iconv
Но зачем, если можно сразу писать файлы в UTF-8, после чего они будут прекрасно читаться любым вменяемым софтом. Для написания такого можно пользоваться <wchar.h> и соответствующими функциями.
0
1 / 1 / 0
Регистрация: 25.07.2019
Сообщений: 42
25.07.2019, 12:11  [ТС]
Потому что я изначально не знаю в какой кодировке будет загружать файл
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
25.07.2019, 12:36
А это и невозможно определить.
Можно попытаться просмотреть от начала до конца в поиске элементов, не соответствующих той или иной кодировке, или искать осмысленные слова, или еще что. Но это, во-первых, крайне сложная задача, а во-вторых, 100% гарантии все равно не дает.
Что у вас за задача-то такая, что текстовые файлы возникают из ниоткуда и в неизвестной кодировке? Может проще прописать в документации "файлы принимаются только в UTF-8", а при нарушении выдавать ошибку и пусть пользователь сам перекодирует?
1
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,077
Записей в блоге: 3
25.07.2019, 12:44
Цитата Сообщение от daneil9 Посмотреть сообщение
я изначально не знаю в какой кодировке
схема как узнать:
3
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
25.07.2019, 12:46
XLAT, а как узнаёт кодировку NotePad++?
0
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,077
Записей в блоге: 3
25.07.2019, 12:57
SomniPhobia,
если у вас есть достаточно времени,
то вы можете поглядеть это в исходниках np++
https://github.com/notepad-plu... -plus-plus
0
1 / 1 / 0
Регистрация: 25.07.2019
Сообщений: 42
25.07.2019, 13:16  [ТС]
Спасибо всем нашёл решение setlocale(LC_ALL, "кодировка ,а не язык");
0
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
25.07.2019, 13:20
Цитата Сообщение от daneil9 Посмотреть сообщение
Спасибо всем нашёл решение setlocale(LC_ALL, "кодировка ,а не язык");
Тебе спасибо за вопрос!
И setlocale(LC_ALL, "кодировка ,а не язык"); решает что написано ниже?
Цитата Сообщение от daneil9 Посмотреть сообщение
Потому что я изначально не знаю в какой кодировке будет загружать файл
1
1 / 1 / 0
Регистрация: 25.07.2019
Сообщений: 42
25.07.2019, 13:31  [ТС]
Ну у меня на gcc всё работает)
0
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,077
Записей в блоге: 3
25.07.2019, 13:51
Цитата Сообщение от daneil9 Посмотреть сообщение
Ну у меня на gcc всё работает)
ок,
пойду тож чайку попью.
1
260 / 165 / 54
Регистрация: 03.05.2019
Сообщений: 339
25.07.2019, 14:25
Цитата Сообщение от daneil9 Посмотреть сообщение
Ну у меня на gcc всё работает)
Он может не везде и не всегда работать. Для Windows можно использовать ещё
C++
1
2
3
4
5
6
7
#include <Windows.h>
/*...*/
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
/*...*/
0
25.07.2019, 15:06

Не по теме:


Цитата Сообщение от XLAT Посмотреть сообщение
пойду тож чайку попью.
Какой чай предпочитаешь?
Я -> холодный/горячий зелёный без сахара. Только его и пью.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.07.2019, 15:06
Помогаю со студенческими работами здесь

Проблемы с русскими символами
#include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;locale.h&gt; int main() { setlocale(LC_ALL, &quot;Russian&quot;); char...

Вывод русскими символами в файл
В файл записывает краказябры. SetConsoleCP(1251); SetConsoleOutputCP(1251); Не помогает. Вот код #include...

Неправильная работа с русскими символами
Проблема: если в пути к файлу ifstream есть русские символы - файл не находится. В качестве пути передаю wstring.c_str();. Как это...

Программа не работает с русскими символами
Программа должна находить два самых часто встречающихся символа и вывести их.Потом убрать лишние пробелы и эти часто встречающиеся...

Длина строки с русскими символами
Всем привет! Возможно, заезженный вопрос, но толкового решения так и не нашел. ВАЖНО: Работаю на XCode под MaxOS 10.14.1 Допустим: ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
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
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru