![]() |
|
Модераторы: bsa |
![]()
|
|
| NOCaut |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 5.12.2008 Репутация: нет Всего: 0 |
Кокой тип даних вибрать для простоти работи со строками? на вход в клас приходит масив юникодних символов typedef wchar_t MasOfWChar[255]; Послее обработки строки нужно поревнять ету строку с таким типом LPCWSTR, така как мене пояснили что ети типи одинакови. Сейчас работаю wchar_t* но немогу найти никаких функция для работи. Спаасибо.
|
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Если работаете в винапи, то лучше использовать ее типы.
Можете посмотреть, в апишных заголовочных файлах, как они определены. например, typedef CONST WCHAR *LPCWSTR; typedef wchar_t WCHAR; из этого видим что LPCWSTR идентичен const wchar_t* Это сообщение отредактировал(а) volatile - 8.5.2011, 11:56 |
|||
|
||||
| NOCaut |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 5.12.2008 Репутация: нет Всего: 0 |
спасибо, ето понял но с етип типом невозможно нормально работать.
я не рабою в чистом апи! Я ком обєкт пишу. мне конвертацию нада сделать один раз на виходе. а до етово както удобно роаботать со строкою мне нада: - получить сколько елементов в моем масиве (размер) - уделить подстроку - uppercase и так дале... Скажите во что можно превратить мой масив символов чтоб легко можно било с ним работать и потом конвертнуть в LPCWSTR Спасибо! Это сообщение отредактировал(а) NOCaut - 8.5.2011, 12:23 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
В вашем массиве 255 элементов, по определению. если же вы хотите получить длину строки, которая там хранится, то просто wcslen(name); Уделить строку - не понял. uppercase, лучше юзать виндовую, так она работает правильно и с национальными символами. CharUpper(name); Приведите ваш код, так как не очень понятно, где у вас проблемы. |
|||
|
||||
| NOCaut |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 5.12.2008 Репутация: нет Всего: 0 |
Прблема № 1
Прблема № 2 Как строке присвоють число и наоборот. Етого вообще неполучается 3 часа просидел (inttostr strtoint) в паскале Прблема № 3 Как число вивести в MessageBox? тоже нигде найти немогу. Прблема № 4 Как привести юникодную строку к нижнему регистру. CharUpper - неюникодная насколько я понимаю нашол towlower - но она кажись для символов Добавлено через 4 минуты и 49 секунд Фиксированая длинна нужна как дание передаются через FileMapping Это сообщение отредактировал(а) NOCaut - 8.5.2011, 14:05 |
|||
|
||||
| volatile |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
1.
В С/С++ строки заканчиваются нулями. oi[5] = 0; 2.
wcstol, и куча подобных. обратное преобразование _ltow, и куча подобных. (я лично предпочитаю в таких случаях swprintf в строку). 3. Ну хотябы преобразовать в строку, и вывести как строку. 4.
В юникодном проекте она юникодная. в неюникодном проекте можно юзать CharUpperW (хотя почему у вас проект не юникодный ?!?) |
||||||
|
|||||||
| NOCaut |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 5.12.2008 Репутация: нет Всего: 0 |
Ето конешно класно, но я заведома незнаю что прийдет в етой строке? мне бежать каждий раз циклом по строке? ознака конца я ввел свой знак "$" чтоб отлечить строку от мусора что идет дале Как проект может бить юникодним
Как может бить он юникодним или не юникодним? И кто Вас сказал что он НЕ юникодний? |
||||
|
|||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
а кто знает? обращайтесь к тому кто эту строку создал. по традиции С/С++ она должна заканчиваться нулем. Если ее не писал паскакальщик конечно. это свойство проекта, читайте документацию. вы сами сказали у вас, имхо, с падежами еще кроме-того немного проблемы |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
| NOCaut |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 5.12.2008 Репутация: нет Всего: 0 |
Ето бил вопрос? иУ меня тут все юникодноє!!! Строка передается с паскаля. $ - мне надо для ознаки конца. На с++ я так понял там вместо "$" нужно "0" ? так неполучится сделать так как я несмогу в один символ засунуть два "\0". Что делать? Это сообщение отредактировал(а) NOCaut - 8.5.2011, 19:10 |
|||
|
||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Вы это где, на паскале не можете сделать? никаких двух нулей не нужно, просто один широкий символ равный нулю 0. В конце концов, если вы можете в паскале записать $, но почему-то не можете записать 0, то можно уже в С просканировать строку, и заменить $ на 0.
|
||||
|
|||||
| NOCaut |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 5.12.2008 Репутация: нет Всего: 0 |
да спасибо, пока все понятно... Я в общем в делфи пишу восновном, просто понадобился х64 обєкт под x64 OC
Это сообщение отредактировал(а) NOCaut - 8.5.2011, 19:57 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Да, более безопасный вариант, для вашего случая:
|
|||
|
||||
| NOCaut |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 5.12.2008 Репутация: нет Всего: 0 |
Как узнать размер структури в байтах
st - указатель на структуру
Размер структури несовпадает с размером структури в Delphi Это сообщение отредактировал(а) NOCaut - 8.5.2011, 20:23 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
sizeof, правильно, это размер в байтах.
А то что она не совпадает, то скорей всего дело в выравнивании. При описании этой структуры нужно указывать правильное выравнивание. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |