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

Странный вывод wstring в wofstream

08.07.2018, 10:26. Показов 1256. Ответов 1

Студворк — интернет-сервис помощи студентам
Мне нужно было считать несортированный словарь из файла txt, отсортировать его по алфавиту, убрать повторы слов и вывести всё это в другой файл. Словарь русский, поэтому я использовал wstring и wofstream. Но почему-то вывод получается странным.
Это другой код, но проблема та же:
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 <string>
#include <fstream>
#include <iostream>
using namespace std;
const wstring ru = L"абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
const wstring RU = L"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
 
int cpos(wchar_t letter) {
        for (int i = 0; i < 33; i++)
            if (RU[i] == letter)
                return i;
        return -1;
}
 
wstring tosmall (wstring s){
    for (wchar_t &i:s){
        int x = (cpos(i));
        if (x>-1)
            i=ru[x];
    }
    return s;
}
 
int main(){
    setlocale(LC_ALL, "rus");
    wifstream inp(R"(C:\Users\User\Desktop\Why\input.txt)");
    if (!inp.is_open())
        return 1;
    wstring s;
    inp >> s;
    wofstream outp(R"(C:\Users\User\Desktop\Why\output.txt)");
//    outp << L"Абв  " << s << " " << tosmall(L"Абв  ") << RU[0] << ru[1] << ru[2] << "  " << tosmall(s);
    outp << L"Абв  " << s << " " << tosmall(L"Абв  ") << RU[1] << ru[2] << ru[3] << "  " << tosmall(s);
    return 0;
}
Файл "input.txt": "Абв", кодировка UTF-8

По непонятной мне причине, один и тот-же wstring выводится в файл по-разному.
ANSI: Абв п»їРђР±РІ абв Бвг п»їрђр±рІ
UTF-8: a⠠Абв ᢢ ¢㠠𐰱%UD888

Если взять другую строку вывода (комментарий), где просто взяты другие символы RU и ru, становится ещё хуже
ANSI: ОђО±ОІ ОїВ»ОЏО*ВђО*В±О*ВІ О°О±ОІ ОђО±ОІ ОїВ»ОЏПЂВђПЂВ±ПЂВІ
UTF-8: ΐαβ Абв ΰαβ ΐαβ ο»Ώππ±π²


Если кто-нибудь знает в чём дело, пожалуйста, расскажите!

Добавлено через 13 часов 27 минут
Как оказалось, входной файл нужно задавать в кодировке ANSI или Windows-1251. Выходной файл будет в кодировке Windows-1251.
Мне надо было поспать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.07.2018, 10:26
Ответы с готовыми решениями:

Вывод wstring в файл
bool addCategory(const std::wstring&amp; name_category) { wfstream fio = initAndCheckWFSTREAM(FILENAME_CATEGORY, ios_base::app |...

Вывод в файл wstring/wchar* с преобразованием кодировки
Имеется строка в юникоде(wstring или wchar*). Вопрос такой, как вывести её в файл, изменив кодировку на заданную. Желателен какой нибудь...

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

1
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
09.07.2018, 12:40
C++
1
2
3
#include <windows.h>
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.07.2018, 12:40
Помогаю со студенческими работами здесь

Странный вывод
Вот почему, когда пишешь House, то выводит так: //5 пробелов перед House, на форуме они показывают как один &lt;?php echo...

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

Странный вывод
Файл text.txt: Файл myfile.cpp: #include &lt;fstream&gt; #include &lt;string&gt; #include&lt;iostream&gt; using namespace std; int main(int...

Странный вывод
Какого черта следующий код на Си char c; int i = 0; while(1) { scanf(&quot;%c&quot;, &amp;c); printf(&quot;%d: %d\n&quot;, i, c); ...

Странный вывод
#include &lt;iostream&gt; #include &quot;conio.h&quot; typedef const double* (*p_fun)(const double *, int); const double * f1(const double av, int n)...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru