Russian Qt Forum
Сентябрь 21, 2017, 07:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 7 8 [9]   Вниз
  Печать  
Автор Тема: Помощь для новичков  (Прочитано 34318 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 1926



Просмотр профиля
« Ответ #120 : Июль 13, 2017, 06:55 »

Кажется, проблема кроется в кириллице в путях. Где расположен файл проекта?
Записан
ijs5
Новичок

Offline Offline

Сообщений: 2


Просмотр профиля
« Ответ #121 : Июль 13, 2017, 18:34 »

Нашел решение, дело в компиляторе. Почему то, в проектах (настройки) он не был установлен. После его выбора в необходимых графах все стало отображаться, спасибо за помощь.
P.S. проект располагается на D:\QtProjeck
Записан
ofi 69
Новичок

Offline Offline

Сообщений: 3


Просмотр профиля
« Ответ #122 : Сентябрь 05, 2017, 00:51 »

Прошу помощи, стоит тривиальная задача, казалось бы. Но видимо не для меня...
И так к сути, у меня есть метод public static QString symbolIsFigure(QString input)
Хотелось бы, для начало, проверить является ли первый символ числом. Я так понимаю что строчка кода Char.IsDigit(input[i])  на языке C++, принесет ожидаемый мной результат.

public static string symbolIsFigure(string input){
for (int i = 0; i < input.length(); i++) //Для каждого символа в входной строке
    {
          if (Char.IsDigit(input[i]))
.
.
.

А вот строчка

if (QChar::isDigit(input[i]))

вызывает ошибку,  no matching function for call to QChar::isDigit(QcharRef)

я пробовал различные варианты с приведением строки к символам и т.п. Но у меня ничего не вышло, возможно я слишком уж новичек.

Если можно, то дайте пожалуйста ответ с пояснением.
« Последнее редактирование: Сентябрь 05, 2017, 00:54 от ofi 69 » Записан
gil9red
Administrator
Neo
*****
Offline Offline

Сообщений: 1793



Просмотр профиля WWW
« Ответ #123 : Сентябрь 05, 2017, 01:19 »

1. Пользуйтесь подсветкой кода (в редакторе кнопка #)
2. Там точно тип string, а не QString? (это сильно разные типы, так что разница имеет значение)
3. isDigit, похоже, ожидает код числа
Код:
bool QChar::isDigit(uint ucs4)
4. Лучше в функцию передавать константную ссылку, чем копию объекта, например поменять описание на:
Код:
static QString symbolIsFigure(const QString& input){

5. А еще до меня дошло что у вас код на c# (public в методе, Char и методы с верхнего регистра), а вы судя по всему на с++/Qt переписываете

А так, QString возвращает элементы через [] и at, и в обоих случаях можно получить QChar, у которого есть isDigit

Код
C++ (Qt)
for (int i = 0; i < input.length(); i++) {
   // Or: if (input.at(i).isDigit()) {
   if (input[i].isDigit()) {
       // ...
   }
}
« Последнее редактирование: Сентябрь 05, 2017, 01:30 от gil9red » Записан

ofi 69
Новичок

Offline Offline

Сообщений: 3


Просмотр профиля
« Ответ #124 : Сентябрь 07, 2017, 02:48 »

Спасибо, немного разобрался (заработало).
Появился такой вопрос,  я как понимаю , что то по факту, строкой
Код:
input[i]
создается объект класса QChar. Если так, то логично что через "." мы вызываем функцию isDigit, свойственный всем объектам этого класса. Но почему тогда Creator не ругается на строку когда я пытаюсь обратиться через имя класса, как будто бы к статической функции
Код:
QChar::isDigit(input[i])
, мало того, если не передать не какой аргумент то он говорит что параметр функции ожидает аргумент.
« Последнее редактирование: Сентябрь 07, 2017, 02:51 от ofi 69 » Записан
gil9red
Administrator
Neo
*****
Offline Offline

Сообщений: 1793



Просмотр профиля WWW
« Ответ #125 : Сентябрь 07, 2017, 07:44 »

...
Но почему тогда Creator не ругается на строку когда я пытаюсь обратиться через имя класса, как будто бы к статической функции
Код:
QChar::isDigit(input[i])
, мало того, если не передать не какой аргумент то он говорит что параметр функции ожидает аргумент.

Потому-что, у QChar есть обыкновенный метод без аргумента и статичный метод с аргументом

Пользуйтесь документацией, у Qt она очень клевая!
Записан

ofi 69
Новичок

Offline Offline

Сообщений: 3


Просмотр профиля
« Ответ #126 : Сентябрь 08, 2017, 06:03 »

Извините, моя ошибка. Дело в том что я очень стараюсь пользоваться документацией, но иногда не все понимаю что там написано. Или как в данном случае, в связи с неопытностью увидев один метод, почему то решил, что статического метода с таким же именем не может быть.
Тогда основываясь на написанном тут я делаю вывод, что если, строка передаваемая мной в качестве параметра, будет в UCS-4, то статический метод
Код:
QChar::isDigit(input[i])
будет работать.
Пытался это реализовать, но не одним из методов, у меня почему то не получилось преобразовать. Или же дело заключается в том, что UCS-4 платформозависим, и будет работать только с Unix?
« Последнее редактирование: Сентябрь 08, 2017, 06:05 от ofi 69 » Записан
gil9red
Administrator
Neo
*****
Offline Offline

Сообщений: 1793



Просмотр профиля WWW
« Ответ #127 : Сентябрь 08, 2017, 11:31 »

Извините, моя ошибка. Дело в том что я очень стараюсь пользоваться документацией, но иногда не все понимаю что там написано. Или как в данном случае, в связи с неопытностью увидев один метод, почему то решил, что статического метода с таким же именем не может быть.
Тогда основываясь на написанном тут я делаю вывод, что если, строка передаваемая мной в качестве параметра, будет в UCS-4, то статический метод
Код:
QChar::isDigit(input[i])
будет работать.
Пытался это реализовать, но не одним из методов, у меня почему то не получилось преобразовать. Или же дело заключается в том, что UCS-4 платформозависим, и будет работать только с Unix?

Если есть вопросы, то лучше код прикладывать -- так всегда проще Улыбающийся Но не весь код, а только тот, что воспроизводит проблему
Записан

Страниц: 1 ... 7 8 [9]   Вверх
  Печать  
 
Перейти в:  

Страница сгенерирована за 0.079 секунд. Запросов: 22.