Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение масива чисел из циферной QString 
:(
    Опции темы
juno24
Дата 27.1.2010, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.11.2009

Репутация: нет
Всего: нет



   Меня уже подтрясывать начинает. 

На  Perl,Pascal,PHP,JavaScript  - все просто, ну здесь все через ж .

   Я умоляю  разъясните .
   Нужно взять строку , состоящую из цифер . Загнать ее в моссив посимвольно .
   Как это сделать ? Догадываюсь что очень просто, но как ?

   Уже перечитал доки по  всем типам QString,QChar,QHash,QVariant ; 

  Например входной параметр функции имеет тип 

   QString ;

  Например так :



  void  MyFunction(QString  chislo)
{
 var_len = chislo.length(); 
 int k[var_len]; 
  
 for (i=0;i<var_len;i++)
  {
   k[i]= chislo.at(i)   // Требует привидение типов , которое не могу сделать ; 
  }
}

 Вызов 
 MyFunction("123456");


  Уже испробовал кучу вариантов ,  щас застрелюсь .
 
  

   

PM MAIL   Вверх
azesmcar
Дата 27.1.2010, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



juno24

Ну так текст в C++ и есть массив символов, если нужно число в виде ЧИСЛА а не СИМВОЛА то отними 48 (ASCII код 0).
Код



PM   Вверх
juno24
Дата 27.1.2010, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.11.2009

Репутация: нет
Всего: нет



  Вы  не поверите,но я понимаю что строка - это есть массив  Типа  Char ;

 Компилятор постоянно выдает ошибку про не соответствие типов и  запрете операций .

 QString   s = "123456" ; 
 
 Ну поидее должен быть какой то метод  в классе QString , который просто загонит все символы 
в массив или в хэш .
  
    Не верится что это не предусмотрено .
 

Это сообщение отредактировал(а) juno24 - 27.1.2010, 16:26
PM MAIL   Вверх
azesmcar
Дата 27.1.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Цитата(juno24 @  27.1.2010,  16:25 Найти цитируемый пост)
 Ну поидее должен быть какой то метод  в классе QString , который просто загонит все символы 
в массив или в хэш .

какой еще хэш. Объясни по человечески, что тебе нужно?

Цитата(juno24 @  27.1.2010,  16:25 Найти цитируемый пост)
 Компилятор постоянно выдает ошибку про не соответствие типов и  запрете операций.

Код покажи.

PM   Вверх
chaos
Дата 27.1.2010, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 5
Всего: 44



пища для ума
Код

QString s = "123456789";
foreach(QChar ch, s) {
    Q_ASSERT(ch.isDigit());
    qDebug() << ch;
    qDebug() << ch.toAscii() - 48;
}



Это сообщение отредактировал(а) chaos - 27.1.2010, 16:39
PM WWW   Вверх
juno24
Дата 27.1.2010, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.11.2009

Репутация: нет
Всего: нет



 Задача следующая  есть входная строка - число . 

Нужно загнать эти  все регистры  этого числа в массив  типа int ;


  чтобы было так  

На входе QString  chislo = "123456";

 на выходе  массив

 int k[6];
 где 
   k[0] = 1 ;    
   ...
   k[5] = 6 ;
 

   Код выше , я же привел пример . Но в нем я натыкаюсь на приведение типов , которое решить не могу . 

 Может  есть кокое то другое решение .

 
PM MAIL   Вверх
azesmcar
Дата 27.1.2010, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Цитата(juno24 @  27.1.2010,  16:03 Найти цитируемый пост)
k[i]= chislo.at(i)  

замени на
Код

k[i] = chislo.at(i).digitValue();


Это сообщение отредактировал(а) azesmcar - 27.1.2010, 17:01
PM   Вверх
SABROG
Дата 27.1.2010, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Даже доработаю пример chaos.

Код

void MainWindow::separateDigits(const QString &str)
{
    QList <quint8> digitList;
    foreach (QChar c, str) {
        Q_ASSERT(c.isDigit());
        digitList << c.digitValue();
    }
}


Массив поменял на QList из-за того, что не все компиляторы поддерживают си массивы переменной длины на стеке. В общем вариантов полно.

Это сообщение отредактировал(а) SABROG - 28.1.2010, 00:16


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Любитель
Дата 27.1.2010, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Модератор: Название темы должно отражать ее суть!


--------------------
PM MAIL ICQ Skype   Вверх
juno24
Дата 27.1.2010, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.11.2009

Репутация: нет
Всего: нет



У меня получилось так 
Код

QVector<int> s ;foreach(QChar ch, summa) { s.append(ch.toAscii() - 48);}



Всем огромное спасибо ! Обещаю называть темы соответственно.

но чесно слово , уже  хотел монитор об стенку долбануть .
PM MAIL   Вверх
andrew_121
Дата 27.1.2010, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Цитата(juno24 @  27.1.2010,  16:03 Найти цитируемый пост)
все просто, ну здесь все через ж .

в таких случаях я говорю: фотку покажи! чтоб было видно откуда руки растут.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
bsa
Дата 27.1.2010, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



juno24, прежде чем что-то писать на языке, было бы неплохо с ним ознакомиться. А так же ознакомиться с документацией по используемым классам. В частности, QString.
Не рекомендую писать программы в одну строчку. Лучше всего писать один оператор - одна строчка, всю прелесть этого правила ты ощутишь при отладке, если не будешь ему следовать. У SABROG код относительно верно выглядит (только assert немного вылез). 
PM   Вверх
SABROG
Дата 28.1.2010, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



assert поправил. Можно еще замутить вариант с полной конвертацией строки в число, а потом делить его в цикле на 10 с взятием остатка пока не получится ноль. Только минус в том, что число будет ограниченно размером целочисленного типа, в то время как строка может быть километровой в длину. Всё зависит от задачи.

Это сообщение отредактировал(а) SABROG - 28.1.2010, 00:23


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
TiKKi
Дата 28.1.2010, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 13.5.2006

Репутация: нет
Всего: 2



UPD: Сорри, не заметил что посимвольно.

Это сообщение отредактировал(а) TiKKi - 28.1.2010, 02:26
PM   Вверх
juno24
Дата 29.1.2010, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.11.2009

Репутация: нет
Всего: нет



Цитата(bsa @ 27.1.2010,  21:31)
juno24, прежде чем что-то писать на языке, было бы неплохо с ним ознакомиться. А так же ознакомиться с документацией по используемым классам. 

      Я предпочитаю изучать любой язык на реальных задачах .  Вот она у меня и возникла , читаю изчаю . 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0918 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.