crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V  < 1 2 3 4 >  
Ответить в данную темуНачать новую тему
> Char и QString
ViGOur
  опции профиля:
сообщение 29.3.2009, 17:51
Сообщение #21


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Ты луше глянь, какое решение предложил igor_bogomolov! :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
whyt
  опции профиля:
сообщение 29.3.2009, 17:51
Сообщение #22


Студент
*

Группа: Участник
Сообщений: 28
Регистрация: 29.3.2009
Пользователь №: 649

Спасибо сказали: 1 раз(а)




Репутация:   1  


igor_bogomolov, интересно /* побежал смотреть */
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 29.3.2009, 17:58
Сообщение #23


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(Litkevich Yuriy @ 29.3.2009, 18:51) *
для этго нужно все файлы исходников конвертнуть в локальную кодировку.

Я про перевод даты. А кодек только для того чтобы кирилуцу распознать.
Там правда придется под себя немного переделывать, если хранится не дата, а отрезок времени 13м07с. Но идея вроде понятна.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
whyt
  опции профиля:
сообщение 29.3.2009, 18:10
Сообщение #24


Студент
*

Группа: Участник
Сообщений: 28
Регистрация: 29.3.2009
Пользователь №: 649

Спасибо сказали: 1 раз(а)




Репутация:   1  


посмотрел предложенный вариант, проблема в том, что вот в этом месте
QTime time = QTime::fromString(timestr, tr("h'ч'm'м'ss'с'"));

каждый раз придется переопределять параметр tr("h'ч'm'м'ss'с'"), тк я не знаю какого типа моя запись 10м, 10ч15м, или 15ч
ну и если сделать так то при вызове функции
int minute () const
для переменной
 QString timestr = tr("1ч15м10с");
мы получим не 75, а 15 минут..

как то крупновато код вставился..модеры, поправьте, если не затруднит

Сообщение отредактировал Admin - 29.3.2009, 23:22
Причина редактирования: Подправил тег code
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 29.3.2009, 18:17
Сообщение #25


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Читайте внимательней документацию.
int min = time.hour () * 60 + time.minute();


Цитата
каждый раз придется переопределять параметр tr("h'ч'm'м'ss'с'"), тк я не знаю какого типа моя запись 10м, 10ч15м, или 15ч
ну и если сделать так то при вызове функции


Я лишь предложил метод, реализацию можно додумать. В любом случае выбирать вам.

Сообщение отредактировал igor_bogomolov - 29.3.2009, 18:21
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
whyt
  опции профиля:
сообщение 29.3.2009, 18:53
Сообщение #26


Студент
*

Группа: Участник
Сообщений: 28
Регистрация: 29.3.2009
Пользователь №: 649

Спасибо сказали: 1 раз(а)




Репутация:   1  


вопрос немного не по теме..но никто не знает в С++ аналог функции Ord() в Delphi?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 29.3.2009, 21:25
Сообщение #27


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(whyt @ 29.3.2009, 19:53) *
вопрос немного не по теме..но никто не знает в С++ аналог функции Ord() в Delphi?

В C++ этого не требуется, т.к. строки не вынесены в отдельный тип данных и на деле являются все теми же строками Си или массивом, или набором байтов.

Если тебе надо сравнивать именно числовые значения (по сути это тоже самое, что и перегруженный оператор сравнения у == QChar/QString/QLatin1String/QLatin1Char), то можно воспользоваться методами QChar::toLatin1(), QChar::toAscii(). Они возвращают значение типа char (-127...+127, размер 1 байт, 256 вариантов значений, тип является не строковым, а числовым, также как Integer)

Сообщение отредактировал SABROG - 29.3.2009, 21:54
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 30.3.2009, 10:50
Сообщение #28


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Если еще актуально, то вот мой вариант решения проблемы
QRegExp rx("(\\d+)");
QString str = "6ч12м23с";
QStringList list;
int pos = 0;
while ((pos = rx.indexIn(str, pos)) != -1)
{
    list << rx.cap(1);
    pos += rx.matchedLength();
}


На выходе мы получим список состоящий из трех элементов: 6, 12, 23
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 30.3.2009, 11:09
Сообщение #29


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(whyt @ 29.3.2009, 19:10) *
я не знаю какого типа моя запись 10м, 10ч15м, или 15ч

Если QString str = "12м23с"; то на выходе получим 12, 23. Встает вопрос: как определить что такое 12 - часы или минуты? Основная задача была перевести подобную строку в минуты. А формат строки может меняться.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
whyt
  опции профиля:
сообщение 30.3.2009, 15:34
Сообщение #30


Студент
*

Группа: Участник
Сообщений: 28
Регистрация: 29.3.2009
Пользователь №: 649

Спасибо сказали: 1 раз(а)




Репутация:   1  


спасибо за помощь, решение уже есть.
molchanoviv, спасибо за вариант,интересно, но немного не то,что мне нужно.
igor_bogomolov, уточнив задачу я понял что всего может быть три вариации букв - 'C' - сутки, 'Ч' - часы,'М' - минуты..а там обрабатываю через if - else и коды символов. если кому - то интересно могу выложить на языке. =)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V  < 1 2 3 4 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.3.2025, 1:39