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

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

25.07.2019, 00:51. Показов 9219. Ответов 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
4189 / 2644 / 654
Регистрация: 23.09.2014
Сообщений: 8,924
Записей в блоге: 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
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,888
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
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,888
25.07.2019, 12:36
А это и невозможно определить.
Можно попытаться просмотреть от начала до конца в поиске элементов, не соответствующих той или иной кодировке, или искать осмысленные слова, или еще что. Но это, во-первых, крайне сложная задача, а во-вторых, 100% гарантии все равно не дает.
Что у вас за задача-то такая, что текстовые файлы возникают из ниоткуда и в неизвестной кодировке? Может проще прописать в документации "файлы принимаются только в UTF-8", а при нарушении выдавать ошибку и пусть пользователь сам перекодирует?
1
Just Do It!
 Аватар для XLAT
4189 / 2644 / 654
Регистрация: 23.09.2014
Сообщений: 8,924
Записей в блоге: 3
25.07.2019, 12:44
Цитата Сообщение от daneil9 Посмотреть сообщение
я изначально не знаю в какой кодировке
схема как узнать:
3
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,406
25.07.2019, 12:46
XLAT, а как узнаёт кодировку NotePad++?
0
Just Do It!
 Аватар для XLAT
4189 / 2644 / 654
Регистрация: 23.09.2014
Сообщений: 8,924
Записей в блоге: 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,406
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
4189 / 2644 / 654
Регистрация: 23.09.2014
Сообщений: 8,924
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
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