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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 5.00
dimmu
0 / 0 / 0
Регистрация: 11.02.2012
Сообщений: 15
#1

Как перевести строку в читабельный вид? - C++

11.02.2012, 12:58. Просмотров 4243. Ответов 56
Метки нет (Все метки)

Собственно из названия темы. Есть строка символов (к примеру такая: 0430002004370430043904340438)
Как перевести ее в читабельный вид, т.е в текст. Уже всю голову сломал Подскажите что прочитать(ссылочку если можно)
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2012, 12:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как перевести строку в читабельный вид? (C++):

Прилетают данные UTF-8, как правильно преобразовать в читабельный вид? - C++
Как преобразовать вот это: cout << buf<<endl; Выдает в UTF-8 кодировке: 01%3Aasd+%D0%92%D0%B0%D1%81%D0%B8%D0%BB%D0%B8%D0%B9 ...

Как перевести строку в BSTR* - C++
Как перевести обычную строку в BSTR* ???

Как перевести массив в строку? - C++
я хочу чтобы можно было вводить какую нибудь строку,чтобы она переводилась в заглавные или прописные буквы...о как это сделать , я не знаю...

Как перевести строку в число? - C++
есть строка вида 14-09-2015 надо перевести в дату как?

Как перевести строку в hex и обратно? - C++
Немогу найти в гугле функцию какбы перевести строку в hex и обратно, мб у кого завалялась?

Как перевести строку из string в char? - C++
Как перевести строку из string в char? Желательно наиболее простой вариант с объяснением.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
-=ЮрА=-
Заблокирован
Автор FAQ
11.02.2012, 18:41 #16
dimmu, вот что я от тебя добивался
Цитата Сообщение от Evg Посмотреть сообщение
"а зайди"
Цитата Сообщение от Evg Посмотреть сообщение
har str[] = { 0x30, 0x04, 0x20, 0x00, 0x37, 0x04, 0x30, 0x04,
* * * * * * * * * *0x39, 0x04, 0x34, 0x04, 0x38, 0x04, 0x00, 0x00 };
- вот я и просил у тебя
абвгде...что бы посмотреть как это будет выглядеть в 16-ричке.

Добавлено через 1 минуту
Цитата Сообщение от Evg Посмотреть сообщение
Страдания ТС'а прекратятся после того, как ему программу для перекодирования выдадут
- ок сейчас поработаю с MultyyteToWideChar чтобы алфавит в го стиле
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
\u0438
записать...

Добавлено через 1 минуту
dimmu, пока работаю см сюда
Создание файла в UTF-8 кодировке
0
Evg
Эксперт CАвтор FAQ
17823 / 6033 / 388
Регистрация: 30.03.2009
Сообщений: 16,563
Записей в блоге: 26
11.02.2012, 18:42 #17
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
dimmu, вот что я от тебя добивался
А ты ради интереса прочти то, что ты написал. И прикинь, сколько шансов было у неспециалиста понять, чего ты от него хочешь
0
-=ЮрА=-
11.02.2012, 18:56
  #18

Не по теме:

Цитата Сообщение от Evg Посмотреть сообщение
А ты ради интереса прочти то, что ты написал. И прикинь, сколько шансов было у неспециалиста понять, чего ты от него хочешь
- мне иногда говорят что общаюсь на одному мне понятном языке
Я хотел от него смс чтобы можно было построить таблицу соответсвия
a - \u0430
б - \u0431
и т.д.
Всего пара минут щелчков на телефоне и всё вот она таблица перекодировки готова, только вставляй в код дешифровщика, дык как по мне по другому и не спросишь за это

0
-=ЮрА=-
Заблокирован
Автор FAQ
11.02.2012, 20:00 #19
Теперь к коду
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
58
#include <windows.h>
#include <iostream>
#include <fstream>
#include <clocale>
#include <string>
using namespace std;
 
char * Utf2Ascii(WCHAR*lpw)
{
    long uLen = WideCharToMultiByte(CP_ACP, 0, lpw,   -1,  NULL, NULL, NULL, NULL);
    char *str = new char[uLen];
                WideCharToMultiByte(CP_ACP, 0, lpw, uLen,  str , uLen, NULL, NULL);
    return str;
}
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    string text;
    string line;
    WCHAR  *lpw = new WCHAR[2];
    WCHAR  *add = 0;
    char * sout = 0;
    long fpos = -1;
    long code = -1;
    long nchr = 0;
    ifstream ifs("sms.txt");
    if(!ifs)
        cout<<"Не могу открыть sms.txt\n";
    else
    {
        while(getline(ifs,line))
            text += line;
        ifs.close();
        cout<<"Данные файла :\n"<<text<<endl;
        while((fpos = text.find("\\u",fpos + 1)) != -1)
        {
            line = text.substr(fpos + 2,4);
            code = atoi(line.c_str());
            lpw[nchr] = code;
            nchr++;
            //Динамически алочим память для lpw
            add = new WCHAR[2];
            lpw[nchr] = add[0];
        }
        lpw[nchr] = 0;
        if(!(sout = Utf2Ascii(lpw)))
            cout<<"Ошибка преобразования\n";
        else
        {
            cout<<"Преобразованные данные :\n"<<(sout = Utf2Ascii(lpw))<<endl;
            delete [] sout;
        }
    }
    system("pause");
    return 0;
}
Как видно из результатов работы
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
\u0430\u0020\u0437\u0430\u0439\u0434\u0438\u0430\u0020\u0437\u0430\u0439\u0434\u 0438\u0430\u0020\u0437\u0430\u0439\u0434\u0438...
- это если и коды UTF-8 то возможно я неправильно их переводил,Evg, натолкни на мысль, мне уже самому интересно стало!!!
1
Миниатюры
Как перевести строку в читабельный вид?  
-=ЮрА=-
Заблокирован
Автор FAQ
11.02.2012, 20:05 #20
PS dimmu,
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Я хотел от него смс чтобы можно было построить таблицу соответсвия
a - \u0430
б - \u0431
и т.д.
0
-=ЮрА=-
Заблокирован
Автор FAQ
11.02.2012, 20:43 #21
Я вообще к чему вёл - вот к примеру взять широкоизвестный формат RTF, предлагаю посмотреть скрин и понять что понимал под таблицей соответсвия
0
Миниатюры
Как перевести строку в читабельный вид?   Как перевести строку в читабельный вид?  
Evg
Эксперт CАвтор FAQ
17823 / 6033 / 388
Регистрация: 30.03.2009
Сообщений: 16,563
Записей в блоге: 26
11.02.2012, 23:09 #22
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Я хотел от него смс чтобы можно было построить таблицу соответсвия
Я, как программист, понимаю, что ты от него хотел. А он, как не программист - не понял. А нужно-то было один раз потратить пару лишних минут на внятное объяснение

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
это если и коды UTF-8 то возможно я неправильно их переводил,Evg, натолкни на мысль
На какую мысль? Я как бы в вопросах кодировок практически ничего не понимаю, особенно по части юникода. Просто вбил в гугл "перевод из юникода в win1251" или что-то типа того, взял готовый код и воткнул в программу, не особенно понимая, что там делается

Добавлено через 1 минуту
Кстати, ТС по ходу не выдержал и пропал. А был-то всего в одном шаге от решения своей проблемы
1
-=ЮрА=-
11.02.2012, 23:17
  #23

Не по теме:

Цитата Сообщение от Evg Посмотреть сообщение
Кстати, ТС по ходу не выдержал и пропал. А был-то всего в одном шаге от решения своей проблемы
- угуМожет всё таки он вернётся, буду надеятся на это, т.к. задание мне понравилось

Цитата Сообщение от Evg Посмотреть сообщение
Я, как программист, понимаю, что ты от него хотел. А он, как не программист - не понял. А нужно-то было один раз потратить пару лишних минут на внятное объяснение
- с этим у меня иногда сложности, надо бы поработать над собой!

0
dimmu
0 / 0 / 0
Регистрация: 11.02.2012
Сообщений: 15
12.02.2012, 00:30  [ТС] #24
Цитата Сообщение от Evg Посмотреть сообщение
Кстати, ТС по ходу не выдержал и пропал
неправда это

-=ЮрА=-, Evg, огромное спасибо за помощь
0
-=ЮрА=-
12.02.2012, 00:33
  #25

Не по теме:

dimmu, дык ещё ж не помогли тебе, ты смог уловить мысль за таблицу соответсвия???

0
dimmu
12.02.2012, 00:42  [ТС]
  #26

Не по теме:

Еще как помогли. остальное завтра додумаю.поздно уже

0
Evg
Эксперт CАвтор FAQ
17823 / 6033 / 388
Регистрация: 30.03.2009
Сообщений: 16,563
Записей в блоге: 26
12.02.2012, 00:44 #27
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ты смог уловить мысль за таблицу соответсвия
Зачем она нужна, когда есть WideCharToMultiByte?
0
-=ЮрА=-
Заблокирован
Автор FAQ
12.02.2012, 00:50 #28
Цитата Сообщение от Evg Посмотреть сообщение
когда есть WideCharToMultiByte?
Evg, ну ты же видел я её применил(пост 19) и вышла билеберда, возможно коды в той смс-ке идут с каки-то смещением. Вот к примеру u0432 означает что код символа должен быть 432 - нет такого
ИМХО легче вбить таблицу перевода чем юзать функцию, ну как по мне проще, вот
0
Evg
Эксперт CАвтор FAQ
17823 / 6033 / 388
Регистрация: 30.03.2009
Сообщений: 16,563
Записей в блоге: 26
12.02.2012, 10:36 #29
А ты видел мой код и приписку, идущую далее? u0432 в случае little-endian при распиливании на два байта выглядит как 0x32, 0x04, но не 0x04, 0x32

Программу твою я не смотрел, но посмотрев, вижу какую-то фигню. У меня есть дикое подозрение, что в файле нету никаких последовательностей типа "\u", в файле должны лежать только набор байтов (а точнее, набор wchar'ов)

А следующую последовательность кодов мой моск попросту отказывается понимать:

C
1
2
3
4
5
6
7
8
9
10
11
WCHAR  *lpw = new WCHAR[2];
WCHAR  *add = 0;
long nchr = 0;
 
while (...)
{
  lpw[nchr] = code;
  nchr++;
  ...
  lpw[nchr] = add[0];
}
мне непонятно, как можно в цикле с большим количеством итераций загонять данные в массив из двух элементов. Не говоря уж о том, что тут вообще делается
0
dimmu
0 / 0 / 0
Регистрация: 11.02.2012
Сообщений: 15
12.02.2012, 11:27  [ТС] #30
Цитата Сообщение от Evg Посмотреть сообщение
Код функции unicode_to_1251
кодблокс предлагает выбрать язык файла (пунки С/С++ source), если я выбираю С, код компилируется и работает, выбираю С++ - нет.
сейчас пробую char к whar_t привести
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2012, 11:27
Привет! Вот еще темы с ответами:

перевести с турбо паскаля в с++ вид - C++
type konf=record name: string; cena:integer; god:integer; mag:integer; end; var kon: array of konf; I,k,max:...

Перевести символ в двичный вид - C++
Добрый день, помогите пожалуйста перевести символ в двичный вид, я не совсем понимаю, как это делается, спасибо большое! Символы у меня в...

Как перевести получившееся число целого типа в строку? - C++
Подскажите ,пожалуйста, как можно перевести получившееся число целого типа в строку?

Перевести длинное целое число в двоичный вид - C++
Нужно перевести длинное целое число в двоичный вид как мне узнать длину массива для двоичных чисел ? про логарифм ясно , не очень...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.02.2012, 11:27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru