Форум программистов, компьютерный форум CyberForum.ru

Некоректное считывание кириллических символов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить в последовательности количество чисел кратных трем, и количество чисел, кратных семи http://www.cyberforum.ru/cpp-beginners/thread1497207.html
Дано натуральное число n и целые числа x1 ,x2, … xn. Определить количество чисел xi кратных трем, и количество чисел xi кратных семи.
C++ Вывести в окно консольного приложения числа в виде таблицы Вывести в окно консольного приложения числа в виде таблицы. 20 21 22 23 24 19 20 21 22 18 19 20 17 18 16 http://www.cyberforum.ru/cpp-beginners/thread1497205.html
Организация вычислений во время ввода данных C++
Дано натуральное число. Верно ли, что произведение его цифр меньше а, а само число делить на в?
C++ Стандартный конструктор копировщик и оператор = не справляются со своей задачей
Всем привет ! Выяснил , что стандартный конструктор копировщик и оператор = не справляются со своей задачей в случае, если значение переменной класса находится в области динамического обмена. После выполнения A = B; значение указателей x обьекта А и В совпадают. После выполнения Vita D(987), C(D); значение указателей x обьекта C и D совпадают.
C++ Unresolved externals http://www.cyberforum.ru/cpp-beginners/thread1497192.html
Здравствуйте. Объявил такую функцию : std::string SplitFileName ( std::string& data) { std::string fileName; int i = data.length() - 1; while (data != '\\' ); while (data != '\0' ) fileName += data;
C++ Построить график функции #include <clocale> #include <ctime> #include <cstdlib> #include <cmath> #include <iostream> #include <vector> #include <iterator> using namespace std; template<typename Type> подробнее

Показать сообщение отдельно
DrOffset
6461 / 3835 / 886
Регистрация: 30.01.2014
Сообщений: 6,630
11.07.2015, 18:08     Некоректное считывание кириллических символов
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Почему? Что делать?
Не использовать однобайтовые кодировки вообще. Использовать юникод везде. Никаких конвертаций.

Вот, причесал твой код.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <vector>
#include <string>
#include <windows.h>
#include <fcntl.h>
#include <io.h>
 
std::vector<std::wstring> CreateFileList(std::wstring const & path, std::vector<std::wstring> & Directories)
{
    std::vector<std::wstring> Files;
 
    Directories.emplace_back(path); // занесение введенного пользователем пути в массив-     
 
    std::wstring const searchMask = path + L"\\*.*";
    std::wcout << searchMask << std::endl;
    
    WIN32_FIND_DATA FindFileData;
 
    HANDLE hf = FindFirstFile(searchMask.c_str(), &FindFileData);
    if (hf != INVALID_HANDLE_VALUE)
    {
        do
        {
            if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // если находим дирректорию 
            {
                std::wcout << " Here is the folder: [" << FindFileData.cFileName << "]" << std::endl;
                Directories.emplace_back(path + L"\\" + FindFileData.cFileName);
            }
            else
            {
                std::wcout << " Here is the file: [" << FindFileData.cFileName << "]" << std::endl;
                Files.emplace_back(path + L"\\" + FindFileData.cFileName);
            }
        } 
        while (FindNextFile(hf, &FindFileData) != NULL); // ищем следующий файл 
    }
    else
    {
        std::wcout << L"Invalid_handle_val" << std::endl;
        std::wcout << L"What to do?" << std::endl;
    }
    return Files;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    _setmode(_fileno(stdin), _O_U16TEXT);
    _setmode(_fileno(stdout), _O_U16TEXT);
 
    std::wstring path;
    if (std::getline(std::wcin, path))
    {
        std::vector<std::wstring> Directories; // вектор с директориями
        std::vector<std::wstring> Files = CreateFileList(path, Directories); // вектор с файлами
    }
    return 0;
}
 
Текущее время: 11:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru