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

Неверное отображение перевёнутой строки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить значение по заданной формуле http://www.cyberforum.ru/cpp-beginners/thread326038.html
Помогите решить пример.
C++ символ "\" как со слешем сравнить if(*pbuf=='\') выдает ошибку error C2001: newline в константе http://www.cyberforum.ru/cpp-beginners/thread326028.html
Как сохранить результат компресии текста функцией compress2 в файл корректно? C++
Не могу разобраться как осуществляет компрессию compress2 и как сделать чтобы она сжимала в корректный gz архив? Сохраняю на винчестер, пытаюсь открыть архиватором, но он пишет что архив поврежден Добавлено через 1 час 24 минуты Вот нашел фразу Эта функция может быть использована для компрессии всего файла за один проход, если этот входной файл спроецирован в память. Не совсем понимаю......
Сортировка строк в алфавитном порядке C++
Собственно сабж) Вроде бы сделал что-то похожее, но ошибка запрета доступа, если вводить строки с клавиатуры (понимаю, что не выделил память под содержимое строк, но не знаю как это сделать). А если задать их заранее, то почему-то не выводятся на экран... //Программа сортировки строк в алфавитном порядке #include <iostream> #include <cstdlib> #include <cstring> using namespace std; ...
C++ Переписать программу с C# на C++ http://www.cyberforum.ru/cpp-beginners/thread326003.html
ребят есть исходники программы написанной на с# я хочу ее переписать на с++ как это можно по проще осуществить :(
C++ XCode и OpenCV Mac OS… XCode 4… долго мучался с установкой opencv… то файла не видит(хотя есть) то еще какаято проблема…*нашел OpenCV Framework. Подключил к проэкту, и тут проблем не миновать… вот допустим море ошибок аля Undefined symbols for architecture x86_64: "_cvLoadImage", referenced from: calcImageHash(_IplImage*, bool) in main.o _main in main.o ну нашел статейку что компилятору... подробнее

Показать сообщение отдельно
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
26.06.2011, 14:49     Неверное отображение перевёнутой строки
С UTF-8 нельзя работать как с набором однобайтовых символов, поскольку разные символы занимают в памяти разное количество байтов (от 1 до 4). Чтобы применять исходный алгоритм к строке в кодировке UTF-8 надо сначала перевести строку из многобайтового представления в представление "широкими" символами wchar_t (например с помощью mbstowcs) после чего с такой строкой можно работать как в исходной программе. А для вывода надо будет перевести обратно.

Добавлено через 10 минут
Вот упрощённый вариант. На самом деле надо добавить ещё определение размера буфера, достаточного для "широкой" строки.
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
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
 
int main(){
    
    wchar_t wstr[256], *firstEl, *lastEl, tVar;
    char str[] = "Это проверка работы программы";
    int lenVar;
    
    setlocale(LC_ALL, "");
    setlocale(LC_NUMERIC, "C");
    cout << "\nИсходная строка: " << str << "\n\n";
    mbstowcs(wstr, str, 256);
    
    lenVar = wcslen(wstr);
    
    firstEl = wstr;
    lastEl = &wstr[lenVar - 1];
    
    while(firstEl < lastEl){
        
        /* произведём обмен символами */
        
        tVar = *firstEl;
        *firstEl = *lastEl;
        *lastEl = tVar;
        
        /* Продвинем указатели */
        
        firstEl++;  lastEl--;
    }
    
    wcstombs(str, wstr, strlen(str)+1);
    cout << "Перевёрнутая строка: " << str << "\n\n";
    
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru