Russian Qt Forum
Ноябрь 26, 2024, 08:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: 1 2 [3] 4 5 ... 11   Вниз
  Печать  
Автор Тема: string и startsWith  (Прочитано 61312 раз)
thechicho
Гость
« Ответ #30 : Май 26, 2013, 04:29 »

Код:
    QString str1 = "лат.";
    str1.replace("лат.", "латинского");
    QString str2 = "лат.";
    str2.chop(1);
Записан
Spark
Гость
« Ответ #31 : Май 26, 2013, 06:33 »

thechicho
Спасибо за скорый ответ.

Как я понял первый случай это подмена, а второй это удаление последнего символа из переменной.

Наверное не совсем ясно задал вопрос и немного усложнил. В данном случае нет необходимости конвертации QString в string.

- Как из переменной типа string удалить последний (последние) символ?
- Как в строке типа string сделать подмены цепочек символов?
« Последнее редактирование: Май 26, 2013, 06:39 от Spark » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #32 : Май 26, 2013, 06:38 »

- Как из переменной типа string удалить последнюю (последние) символы?
- Как в строке типа string сделать подмены цепочек символов?
Я уже приводил эту ссылку выше. Используйте boost: http://www.boost.org/doc/libs/1_53_0/doc/html/string_algo/quickref.html
Записан
thechicho
Гость
« Ответ #33 : Май 26, 2013, 06:40 »

//типа string
//Qt > Вопросы новичков
форумом не ошиблись?

ищите сами, или ждите пока m_ax подскажет
Записан
Spark
Гость
« Ответ #34 : Май 26, 2013, 06:59 »

thechicho
Как я писал, самый, что ни на есть новичок, причем не только с QT, С++ но и в программировании как таковом. Поэтому прошу отнестись с пониманием. Мне сложно ориентироваться куда следует адресовать подобные вопросы. В свое время и вам кто то помогал, терпеливо отвечая на вопросы.

Ну а мой способ обучения прост. Видеокурсы, справочники, потихоньку.
Установил Qt 4.8.4 + MinGW 4.4 + Qt Creator 2.6.2. Взял исходник и правлю код, разбираясь, что к чему. Если пока, что то не поддается логическому осмыслению - задаю вопросы.
Так, что еще раз извините, если что не так.
« Последнее редактирование: Май 26, 2013, 07:11 от Spark » Записан
thechicho
Гость
« Ответ #35 : Май 26, 2013, 08:27 »

//В свое время и вам кто то помогал, терпеливо отвечая на вопросы.
хаха, меня забанили в свое время за такие вопросы. не всем нравятся тупые (элементарные) вопросы Улыбающийся

поискал за вас в гугле.
запрос string первый результат из серча:
http://www.cplusplus.com/reference/string/string/
слева внизу видим
member functions:

я бы на вашем месте, если строка небольшая, привел ее к QString, сделал то, что вам надо, потом выполнил обратное приведение (cast)
но, если вам хочется работать с чистым c++, ссылку на функции я вам дал, ищите подходящие
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #36 : Май 26, 2013, 09:30 »

В данном случае нет необходимости конвертации QString в string.

- Как из переменной типа string удалить последний (последние) символ?
- Как в строке типа string сделать подмены цепочек символов?
Вы можете использовать советы выше или написать свои утилиты - прекрасная возможность потренироваться в языке. Если опыта пока мало, то последний вариант заметно лучше
Записан
Spark
Гость
« Ответ #37 : Май 26, 2013, 10:31 »

Спасибо ребят за советы. Подействовало Улыбающийся.
Вы можете использовать советы выше или написать свои утилиты - прекрасная возможность потренироваться в языке. Если опыта пока мало, то последний вариант заметно лучше
И все таки для меня лучше выжимка. Как ваш первый ответ. Быстрее докопаться до сути и отложить, что то в голове. А так пришлось все таки потратить несколько часов и запихать кучу всякого мусора. Сомнительно, что он пригодится.

Воспользовался советом:
я бы на вашем месте, если строка небольшая, привел ее к QString, сделал то, что вам надо, потом выполнил обратное приведение (cast)
Однако, для меня это не совсем светлый лес, но идею уловил. Так сделал:
Код:
string text= Utf8::encode( no.tagAtt );
QString str = text.c_str();

if ( str.endsWith( "." ) )
{
str.chop(1);
string bloc = str.toStdString();

string rez = string( "hello" ) + bloc + "!";
}
Вроде как сработало. Пойдет?

И все таки было бы интересно знать, а как бы этот кусочек кода можно было сделать по другому.
Записан
Spark
Гость
« Ответ #38 : Май 26, 2013, 10:41 »

- Как из переменной типа string удалить последнюю (последние) символы?
- Как в строке типа string сделать подмены цепочек символов?
Я уже приводил эту ссылку выше. Используйте boost: http://www.boost.org/doc/libs/1_53_0/doc/html/string_algo/quickref.html
Т.е. имеется ввиду надо подключить дополнительную библиотеку boost или это справочник по стандартной библиотеке C++? Вы уж извините, если я что не так ляпнул Улыбающийся.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #39 : Май 26, 2013, 10:59 »

Вроде как сработало. Пойдет?
Ну Вы же сами понимаете - это халтура. Давайте перельем строку из одного представления в другое, где есть удобные утилиты, а потом обратно. Да, делов неск секунд, но ведь платим оптимальностью. Вот кто-то ускорит Ваш код раз так в 20 и скажет типа "там какой-то лошара писал, с пых-пых наверно". И, поверьте, будет неприятно.

Спасибо ребят за советы. Подействовало Улыбающийся.
Нет ничего плохого в "ребят", просто на любом форуме есть очень разные люди. Поэтому более официальный тон лучше/выгоднее

Т.е. имеется ввиду надо подключить дополнительную библиотеку boost
Да, но бояться не стоит - обычно достаточно скопировать boost хедеры, вот и все подключение. Эта один из самых мощных и (заслуженно) престижных tool
Записан
Spark
Гость
« Ответ #40 : Май 26, 2013, 11:33 »

Ну Вы же сами понимаете - это халтура. Давайте перельем строку из одного представления в другое, где есть удобные утилиты, а потом обратно. Да, делов неск секунд, но ведь платим оптимальностью. Вот кто-то ускорит Ваш код раз так в 20 и скажет типа "там какой-то лошара писал, с пых-пых наверно". И, поверьте, будет неприятно.
Т.е. вы намекаете, что в данном случае правильнее использовать C++ в чистом виде?
Я понимаю, что преобразований в идеале не должно быть. Только в крайних случаях. Для меня, наверное, это тот самый случай и есть. Программа слишком сложна для меня, что бы ее так просто всю перелопатил, поменяв все переменные... Не я ведь ее писал. Я на ней только учусь, взяв один модуль. А вот результат для меня важен, как то, что я хочу получить от новых возможностей этой программы, так и само обучение важно. Полезное с приятным. И как только получу желаемый результат, а заодно и подучусь - надеюсь к этому времени смогу исправить код в лучшую сторону.
А пока, что я только познаю азы.
И еще раз спасибо за советы. Помогли. И я снова счастлив и могу двигаться вперед на несколько шагов до следующего вопроса Улыбающийся.
А там глядишь и сам научусь находить точные ответы. Пока что структура С++ и Qt для меня не ясна (ну что стесняться, что есть то есть) и я не могу быстро ориентироваться в ответах, которые на половину не договорены и ориентированы на подготовленного пользователя. Для меня сейчас это как бы ориентироваться на разные диалекты языка и какой ответ подходит именно для меня не всегда ясно.

P.S. Правда ответ на вторую часть я не получил. Ведь мне надо в строковой переменной (предложении, вводимом пользователем) найти последовательности и заменить их на нужные.
Постараюсь разобраться. Направление вроде дано.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #41 : Май 26, 2013, 11:42 »

P.S. Правда ответ на вторую часть я не получил. Ведь мне надо в строковой переменной (предложении, вводимом пользователем) найти последовательности и заменить их на нужные.
Постараюсь разобраться. Направление вроде дано.
поискал за вас в гугле.
запрос string первый результат из серча:
http://www.cplusplus.com/reference/string/string/
слева внизу видим
member functions:

не совсем понятно зачем было сразу лезть в Qt если нету даже знания языка
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Spark
Гость
« Ответ #42 : Май 26, 2013, 11:45 »

Да, но бояться не стоит - обычно достаточно скопировать boost хедеры, вот и все подключение. Эта один из самых мощных и (заслуженно) престижных tool
Ясно спасибо. Пока еще не устали на сегодня от моих вопросов. Если можно ссылочку на пошаговое подключение. Или в двух словах как это делается. Для меня ваша фраза означает не много и может означать:
- прописать заголовки
- скопировать от куда то куда то какие то файлы

Программу я крою месяца два, а язык начал учить с неделю назад Улыбающийся. Вот такое положение дел. Конечно же есть какие то навыки в программировании, иначе бы не мог ничего сделать. Но они в основном поверхностные.
Записан
Spark
Гость
« Ответ #43 : Май 26, 2013, 11:57 »

не совсем понятно зачем было сразу лезть в Qt если нету даже знания языка
Честно говоря для меня это не менее странный вопрос. А куда надо было лезть Улыбающийся?
Знания у меня есть какие то. Практики нет. Разбирая открытый код, обучение происходит гораздо быстрее. То, что я делаю написано с использованием Qt. Попробовал - понравилось. Проблем в плане страха нет никаких. Сложностей не вижу. Осознаю только, что понадобится некоторое время, что бы уложить структуру в голове.
Ну в обще флудить точно не хотелось бы.
А при случае покажу, что уже сделано и что хочу сделать. Не так уж и плохо. Это при том, что сделано большая часть без знания C++ и как такового Qt.  Просто как бы на блочном уровне, путем перестановки переменных, логики и основываясь на базовых знаниях о переменных, условиях... Какие то языки я учил когда-то Улыбающийся.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #44 : Май 26, 2013, 12:14 »

P.S. Правда ответ на вторую часть я не получил. Ведь мне надо в строковой переменной (предложении, вводимом пользователем) найти последовательности и заменить их на нужные.
Постараюсь разобраться. Направление вроде дано.
Ну а почему бы не сделать самому, вместо того чтобы бегать и "изыскивать"?
Код
C++ (Qt)
std::string MyFindAndReplace( const std::string & src, const char * match, const char * replace )
{
std::string dst;
size_t prv = 0, mlen = strlen(match);
while (true) {
  size_t nxt = src.find(match, prv);
  if (nxt != std::string::npos) {
   dst.append(src.c_str() + prv, nxt - prv);
   dst += replace;
   prv = nxt + mlen;
  }
  else {
   dst.append(src.c_str() + prv);
   break;
  }
}
return dst;
}
 
Писал прямо здесь, возможны ошибки. Если Вы умеете писать такие ф-ции, и это Вам уже просто неинтересно - ну можно и готовым попользоваться. Но вот если не умеете - срочно учитесь, иначе окажетесь в положении той самой "обезьяны без кармана"  Улыбающийся
Записан
Страниц: 1 2 [3] 4 5 ... 11   Вверх
  Печать  
 
Перейти в:  


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