Char и QString |
Здравствуйте, гость ( Вход | Регистрация )
Char и QString |
whyt |
29.3.2009, 15:04
Сообщение
#1
|
Студент Группа: Участник Сообщений: 28 Регистрация: 29.3.2009 Пользователь №: 649 Спасибо сказали: 1 раз(а) Репутация: 1 |
добрый день всем. вот возник такой вопрос. имеется некая переменная типа QString, из нее изымается один символ методом Str.mid(1,1), соответственно на выход мы имеем переменную типа QString размером в один символ. теперь вопрос, реально ли эту переменную конвертировать в Char (логично что сам QString нельзя просто так перевести, ибо это строка, а Char - все же символ) ?? курил маны, юзал гугл..толком решения не увидел, а нужно все это для того,чтобы потом перебрать варианты с помощью switch ... case...(на определенный символ - определенное действие).
|
|
|
ViGOur |
29.3.2009, 15:22
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
const QChar QString::at ( int position ) const
Цитата Returns the character at the given index position in the string. The position must be a valid index position in the string (i.e., 0 <= position < size()). Пойдет? |
|
|
whyt |
29.3.2009, 15:32
Сообщение
#3
|
Студент Группа: Участник Сообщений: 28 Регистрация: 29.3.2009 Пользователь №: 649 Спасибо сказали: 1 раз(а) Репутация: 1 |
спасибо за совет. буду внимательнее читать маны..сделав таким образом:
CODE const QChar cM=sDate.at(2); switch (cM) { case 'X': { bool ok=true; } } получаю вот такую неприятность "switch quantity not an integer", подозреваю - ошипко кроеца в том,что мы конвертируем в QChar, а switch работает с char,int и тд.. |
|
|
ViGOur |
29.3.2009, 15:41
Сообщение
#4
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
У меня нет компилятора под рукой, но вот, что пишется в описании класса QChar:
Цитата The QChar class provides a 16-bit Unicode character.
In Qt, Unicode characters are 16-bit entities without any markup or structure. This class represents such an entity. It is lightweight, so it can be used everywhere. Most compilers treat it like a unsigned short. |
|
|
trdm |
29.3.2009, 16:09
Сообщение
#5
|
Дмитрий Трошин Группа: Участник Сообщений: 575 Регистрация: 12.1.2008 Пользователь №: 68 Спасибо сказали: 21 раз(а) Репутация: 6 |
если разжуешь задачку, не укусим.
Другими словами: Че надо или че хош сотворить? |
|
|
whyt |
29.3.2009, 16:23
Сообщение
#6
|
Студент Группа: Участник Сообщений: 28 Регистрация: 29.3.2009 Пользователь №: 649 Спасибо сказали: 1 раз(а) Репутация: 1 |
вкратце суть задачи такова.. в бд храниться запись в виде "1ч15м10с", и именно в таком. мне нужно перевести это выражение в минуты. я считываю в переменную типа QString это поле, и начиная c первого символа я перебираю эту переменную,переводя символы в коды ASCII ( в делфях было сделано так - If (Ord(str[1]) >= 48) And (Ord(str[1]) <= 57) - и таким образом я отсеиваю цифры и буквы..и когда получаю цифры (сначала 1 - нужно проанализировать какой символ стоит за буквой, если 'ч' или 'Ч', то я 1 * 60 и получаю количество минут) и так далее..а выбор я произвожу через switch ... case.. можно конечно через if .. else, но это мне неудобно.
|
|
|
trdm |
29.3.2009, 16:45
Сообщение
#7
|
Дмитрий Трошин Группа: Участник Сообщений: 575 Регистрация: 12.1.2008 Пользователь №: 68 Спасибо сказали: 21 раз(а) Репутация: 6 |
в какой кодировке сорцы?
погугли насчет юникода http://ru.wikipedia.org/wiki/%D0%9A%D0%B8%...%BE%D0%B4%D0%B5 строки в Qt: QString stores a string of 16-bit QChars, where each QChar corresponds one Unicode 4.0 character. используй конструкторы типа: QChar ( short code ) QChar(0x10e3); т.е. 'ч' будет QChar(0x0447); 'Ч' будет QChar(0x0427); вот с ними и сравнивай в if (cM == QChar(0x0427)) помогло? Сообщение отредактировал trdm - 29.3.2009, 16:42 |
|
|
Litkevich Yuriy |
29.3.2009, 16:48
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
whyt, посмотри описание класса QChar
в списке функций есть несколько штук возвращающих uchar и char |
|
|
whyt |
29.3.2009, 16:49
Сообщение
#9
|
Студент Группа: Участник Сообщений: 28 Регистрация: 29.3.2009 Пользователь №: 649 Спасибо сказали: 1 раз(а) Репутация: 1 |
сорцы в Юникоде..
щас погуглим, а почему именно эти? а нельзя юзать QChar::QChar ( char ch ) Constructs a QChar corresponding to ASCII/Latin-1 character ch. вот это? |
|
|
Litkevich Yuriy |
29.3.2009, 16:51
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Цитата The conversion functions include unicode() (to a scalar), toLatin1() (to scalar, but converts all non-Latin-1 characters to 0), row() (gives the Unicode row), cell() (gives the Unicode cell), digitValue() (gives the integer value of any of the numerous digit characters), and a host of constructors.
|
|
|
Текстовая версия | Сейчас: 1.12.2024, 8:03 |