Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 05.09.2014
Сообщений: 96

Как считать русский символ в char и файла

04.08.2019, 05:51. Показов 1498. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Мне нужно считать из файла текст для кодирования. Текст в файле должен быть на русском языке.
Проблема в том, что при считывании русская буква читается как 2 и с отрицательным значением...
Пробовал ее переделать в беззнаковый чар...

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
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
using namespace std;
 
int main()
{
    setlocale( LC_ALL,"Russian" );
    system("chcp 1251");
    int i;
    char c;
    unsigned char r;
    vector<char>Rletters;
    ifstream table;
    ofstream rez;
    table.open("Vtable.txt");
    rez.open("result.txt");
    while (table)
    {
        table >> c;
        cout << (int)c << " ";
        Rletters.push_back(c);
        }
    }
    cout << Rletters.size();
    for (i=0; i<Rletters.size(); i++)
        rez.put(Rletters[i]);
 
    table.close();
    rez.close();
    return 0;
}
В результате выводит -48 -80 -48 -79 -48 -78 -48 -77 -48 -76 -48 -75 -47 -111 -48 -74 -48 -73 -48 -72 -48 -71 -48 -70 -48 -69 -48 -68 -48 -67 -48 -66 -48 -65 -47 -128 -47 -127 -47 -126 -47 -125 -47 -124 -47 -123 -47 -122 -47 -121 -47 -120 -47 -119 -47 -118 -47 -117 -47 -116 -47 -115 -47 -114 -47 -113 -113 67

а в файл перезаписывает
–∞–±–≤–≥–і–µ—С–ґ–Ј–Є–є–Ї–ї–Љ–љ–Њ–њ—А—Б—В —Г—Д—Е—Ж—З—И—Й—К—Л—М—Н—О—ПП

Всем спасибо за помощь!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.08.2019, 05:51
Ответы с готовыми решениями:

Как считать русский текст из файла
Как мне считать русские слова из файлла с помощью SystemIO. Очень срочно!!! Через 2 дня здавать МАН.

Конвертировать русский символ char в строку String^
Здравствуйте, докопался в MSDN до такой вот ф-ции String(Char, Int32) которая инициализирует новый экземпляр класса String значением,...

Xcode: не получается присвоить переменной типа char русский символ
Здравствуйте, недавно перешел в среду Xcode (перешел с VisualStudio) и столкнулся с такой проблемой: по непонятной мне причине я не могу...

5
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.08.2019, 09:02
Цитата Сообщение от студ Посмотреть сообщение
Проблема в том, что при считывании русская буква читается как 2 и с отрицательным значением...
Пробовал ее переделать в беззнаковый чар...
У тебя файл Vtable.txt закодирован в utf-8.
Чтобы корректно выводилось на консоль, сделай в начале ::SetConsoleOutputCP(CP_UTF8);
И что вообще ты пытаешься сделать?
0
0 / 0 / 1
Регистрация: 05.09.2014
Сообщений: 96
08.08.2019, 16:38  [ТС]
Спасибо, сделал немного "криво", но, вроде работает. Просто работаю с каждым символом как с двумя элементами массива char. например, надо сравнить 2 буквы - сравниваю по два их элемента типа char, надо записать букву в файл - записываю два элемента массива.
Не знаю насколько это корректно с точки зрения программирования, но работает.
Вот только если в файле будут еще и латинские буквы или цифры, работать не будет.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
08.08.2019, 16:47
Цитата Сообщение от студ Посмотреть сообщение
Не знаю насколько это корректно с точки зрения программирования, но работает.
Вот только если в файле будут еще и латинские буквы или цифры, работать не будет.
Здесь лучше сконвертировать весь файл в юникод
0
0 / 0 / 1
Регистрация: 05.09.2014
Сообщений: 96
08.08.2019, 17:00  [ТС]
Так все равно, в любой копировке символ с кодом более 128 будет считан в чар как 2...
Не могу понять как перекодировка может помочь... 128 - это же ASCII если я не ошибаюсь?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
08.08.2019, 17:04
Цитата Сообщение от студ Посмотреть сообщение
Так все равно, в любой копировке символ с кодом более 128 будет считан в чар как 2...
Не могу понять как перекодировка может помочь... 128 - это же ASCII если я не ошибаюсь?
Там все символы будут по 2 байта, независимо от языка, - wchar_t.
utf8 - мультибайтовая кодировка, там размер символа может быть и 2 и 3 и больше байт. Что-то с ней делать тяжеловато.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.08.2019, 17:04
Помогаю со студенческими работами здесь

Как считать строку из файла в char?
Всем привет! Считать строку из файла в string - не проблема. Функцию getline() и погнали. Но мне нужно загнать данные в массив char. Как...

Считать последний символ файла. Записать символ в конец файла
Есть файл. Нужно сначала дописать в его конец один символ, а затем его считать. Как это сделать? Подскажите!

Считать из этого файла какой-либо символ и записать этот символ в новый файл
здравствуйте , помогите с решением следующего задания: естьтекстовый файл vvod.txt, в нем записана строка. мне нужно считать из этого...

Считать текст из файла и заменить символ А на символ В
Нужно написать программу, которая считывает текст из файла и заменяет символ А на символ В. Можете помочь?

Как считать из файла текст в двумерный массив типа char и отсортировать в алф. порядке?
Постановка задачи: Исходные данные считать из текстового файла через отдельную функцию. Дана строка символов, состоящая из...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru