Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Spark от Май 20, 2013, 07:01



Название: string и startsWith
Отправлено: Spark от Май 20, 2013, 07:01
Доброго времени суток всем!
Мало, что понимаю в QT и C++, да и в программировании :). Не судите строго. Но самый простой способ уложить, что то в голове это примеры.

Возникла необходимость сделать, примерно, такую конструкцию:

string word("hello");
QString str = word;
if ( str.startsWith("h") )

Выдает ошибку: conversion from 'std::string' to non-scalar type 'QString' requested

Понятно, что не правильно. А как правильно? Просьба, если кто откликнется, пояснить это простым языком с простым примером, если это возможно.

Или использовать иной вариант для ситуации:
- Есть некоторая строковая переменная string str.
- Необходимо выполнить условие if если эта переменная начинается c определенных символов.

Спасибо за помощь


Название: Re: string и startsWith
Отправлено: Igors от Май 20, 2013, 07:15
Код
C++ (Qt)
QString str = word.c_str();


Название: Re: string и startsWith
Отправлено: Spark от Май 20, 2013, 07:32
Спасибо! Не представляете как я счастлив :). Так все просто оказалось. Лучше все таки спросить, чем потратить несколько вечеров на эксперименты, пытаясь учить C++ конца :).


Название: Re: string и startsWith
Отправлено: m_ax от Май 20, 2013, 09:56
Можно и без QString это сделать:

Код
C++ (Qt)
std::string word = "hello";
if (!word.find_first_of("hH")) {
...
}
 


Название: Re: string и startsWith
Отправлено: m_ax от Май 20, 2013, 09:58
Спасибо! Не представляете как я счастлив :). Так все просто оказалось. Лучше все таки спросить, чем потратить несколько вечеров на эксперименты, пытаясь учить C++ конца :).

Лучше всё-таки, потратить несколько вечеров на эксперименты, изучая плюсЫ)


Название: Re: string и startsWith
Отправлено: Igors от Май 20, 2013, 09:59
Можно и без QString это сделать:

Код
C++ (Qt)
std::string word = "hello";
if (!word.find_first_of("hH")) {
...
}
 
А если понадобится без учета регистра?  :)


Название: Re: string и startsWith
Отправлено: m_ax от Май 20, 2013, 10:00
Можно и без QString это сделать:

Код
C++ (Qt)
std::string word = "hello";
if (!word.find_first_of("hH")) {
...
}
 
А если понадобится без учета регистра?  :)

Ну дык это и есть, без учёта регистра)


Название: Re: string и startsWith
Отправлено: thechicho от Май 20, 2013, 10:39
if (!word.find_first_of("hH")) {

Return Value
The position of the first character that matches.
If no matches are found, the function returns string::npos.
static const size_t npos = -1;

объясните, как это логическое выражение работает? учитывая, что false, это вроде как 0(zero)


Название: Re: string и startsWith
Отправлено: mutineer от Май 20, 2013, 10:42
Если символ найден в позиции 0, то значение выражения true. В остальных случаях false


Название: Re: string и startsWith
Отправлено: thechicho от Май 20, 2013, 10:45
word.find_first_of("hH") вернет 0, если строка начинается с hH?

if (!0) {
не понимаю, как это выражение работает.

и еще вопрос. ("hH") - поиск будет поочередно? или сначала поиск пройдет по h, по всей строке, а потом по H?
что вернет функция, если строка будет "Hello hello". 0 или 6?


Название: Re: string и startsWith
Отправлено: thechicho от Май 20, 2013, 10:48
//Если символ найден в позиции 0, то значение выражения true. В остальных случаях false

все понял. если функция возвращает 0 (false), то код отработает
if (!0) {
}


Название: Re: string и startsWith
Отправлено: mutineer от Май 20, 2013, 10:48
if (!0) {
не понимаю, как это выражение работает.
учитывая, что false, это вроде как 0(zero)


Название: Re: string и startsWith
Отправлено: m_ax от Май 20, 2013, 11:03
word.find_first_of("hH") вернет 0, если строка начинается с hH?

if (!0) {
не понимаю, как это выражение работает.

и еще вопрос. ("hH") - поиск будет поочередно? или сначала поиск пройдет по h, по всей строке, а потом по H?
что вернет функция, если строка будет "Hello hello". 0 или 6?

метод find_first_of ищет в строке и возвращает позицию первого символа, совпадающего с любым символом из заданной группы.
Соответственно в строке "Hello hello" find_first_of("hH") вернёт 0.


Название: Re: string и startsWith
Отправлено: Igors от Май 20, 2013, 11:05
Ну ладно, нашли "h(H)", а нужно-то было "hello"


Название: Re: string и startsWith
Отправлено: thechicho от Май 20, 2013, 11:10
ясно, спс.
но, имхо, для функций, которые возвращают не только 0 или 1
такая запись некорректна
if (!word.find_first_of("hH")) { // wtf? }

я бы так писал
if (word.find_first_of("hH") == 0) { // строка начинается с символа из группы }
if (word.find_first_of("hH") != -1) { // строка содержит символ из группы }


Название: Re: string и startsWith
Отправлено: mutineer от Май 20, 2013, 11:11
Ну ладно, нашли "h(H)", а нужно-то было "hello"

Кому нужно? Топикстартеру нужно было startsWith


Название: Re: string и startsWith
Отправлено: mutineer от Май 20, 2013, 11:13
ясно, спс.
но, имхо, для функций, которые возвращают не только 0 или 1
такая запись некорректна
if (!word.find_first_of("hH")) { // wtf? }

я бы так писал
if (word.find_first_of("hH") == 0) { // строка начинается с символа из группы }
if (word.find_first_of("hH") != -1) { // строка содержит символ из группы }

Если интересно вернула функция 0 или не 0 эта запись вполне корректна. В этом случае интерес как раз в том равен результат 0 или не равен. -1 там или какое другое значения непринципиально


Название: Re: string и startsWith
Отправлено: thechicho от Май 20, 2013, 11:23
я не говорю, что запись неверна.
я говорю некорректна.

if (!word.find_first_of("hH"))
если в строке не найдено первым "hH". я так прочитал сначала и подумал wtf?
когда прочитал справку по методу find_first_of(), то дошло, что имелось в виду, если метод вернет 0. значит строка начинается с "hH"

if (word.find_first_of("hH") == 0)
тут мне сразу понятно, что метод возвращает позицию первого вхождения. и если эта позиция 0, то значит строка начинается с "hH"

ну это все субъективно. я такое использование не встречал, поэтому сразу не сообразил.


Название: Re: string и startsWith
Отправлено: m_ax от Май 20, 2013, 11:28
Ну ладно, нашли "h(H)", а нужно-то было "hello"

Да ладно  ???
А по-моему, ТС ясно написал, что нужно..

Ну если уж Вам так хочется искать именно "hello":
Код
C++ (Qt)
std::string word = "hello";
if (!word.find("hello")) {
   ...
}
 

ясно, спс.
но, имхо, для функций, которые возвращают не только 0 или 1
такая запись некорректна
if (!word.find_first_of("hH")) { // wtf? }
Эт почему это некорректна  ???


Название: Re: string и startsWith
Отправлено: Igors от Май 20, 2013, 12:06
Код
C++ (Qt)
std::string word = "hello";
if (!word.find("hello")) {
   ...
}
 
А так нет регистра :) Помню как-то в очередной текстовой разборке решил поиспользовать std::string, ну и пришлось клепать утилиты (startsWith, trim и.т.п.), ничего готового не нашел

Код
C++ (Qt)
Эт почему это некорректна
Да она может и корректна, но заставляет читающего без нужды ломать голову - и это плохо


Название: Re: string и startsWith
Отправлено: Old от Май 20, 2013, 12:23
А так нет регистра :) Помню как-то в очередной текстовой разборке решил поиспользовать std::string, ну и пришлось клепать утилиты (startsWith, trim и.т.п.), ничего готового не нашел
Ну не в boost'е же смотреть. Право слово. :)
http://www.boost.org/doc/libs/1_53_0/doc/html/string_algo/quickref.html#idp163449456

Да она может и корректна, но заставляет читающего без нужды ломать голову - и это плохо
Без нужды ломать голову... это плохо... у нас все время надо ломать голову и чем больше ломаешь, тем лучше. ;)


Название: Re: string и startsWith
Отправлено: Spark от Май 20, 2013, 15:06
Лучше всё-таки, потратить несколько вечеров на эксперименты, изучая плюсЫ)
Материал я постепенно изучаю. Но вот такая ситуация, что разбираю код и подгоняю программу под себя. И до поры до времени хватало логики, что бы делать это без знаний C++  и QT :). Настроил Qt, взял исходник и, небольшой навык в программировании и логике и этого хватало, что бы переставлять кирпичики и перестраивать программу. Но вот уперся в предел возможностей для такого подхода блочной перестановки. И хоть получается с точки зрения пользователя все красиво. Но вот изнутри халтурно. Взялся за справочную информацию и последовательно слушаю видео лекции. Но вот код подправить надо сиюминутно и обидно, что чувствую что решение близко, но не хватает понимания, что делаю. Метод проб и ошибок долог в данной ситуации. Пока осознаю весь материал, а уж когда дойду до подробностей... А тут показали строчку и все заработало. Это дало гораздо больше, чем попытка осознать справочную информацию, где может и есть то, что мне нужно, но к сожалению требует слишком много дополнительной информации, прежде чем я смогу осознать, что же там написано. Чуточку, но логика для меня постепенно выстраивается в связную форму :). Нельзя сказать, что я все понял. Но картина целостности из таких кирпичиков выстраивается довольно быстро, если практиковаться.
Опыт профи бесценен. Спасибо за советы. Полагаю, что вопросов будет еще не мало. Надеюсь, что добрые люди, желающие и не ленящиеся помочь всегда будут, даже если вопросы заданы в сотый раз. Не всегда просто найти с ходу именно нужную информацию. Прежде чем спросить, пару вечеров потратил найти краткий и ясный ответ, параллельно экспериментируя, ориентируясь на справочник.


Название: Re: string и startsWith
Отправлено: Spark от Май 21, 2013, 04:27
На всякий случай поясню ситуацию. Может интересно. Извините, что наверное корявым языком. Но я только учусь.
На самом деде, конечно упростил пример, что бы получить ясный ответ.

Если бы у меня была простая строка, то сложностей не возникало. Я просто писал так:
Код:
QString str("hello");
if ( str.startsWith("h") )
И все работало.

В реальности же:
string word = некой переменной, которую пользователь вносит сам и которая участвует в длинной цепочке ifов. И различных startsWith хватает, так же как и endsWith. И не только по одному символу, но и цепочки.

И с этим уже поделать я ничего не могу. Необходимо было преобразовать string в Qstring. Но автопреобразование не сработало, как в первом посте. Что плохо для меня как для начинающего :).

В реальности же кусочек кода сейчас выглядит примерно так:
Код:
string nam = Utf8::encode( node.Attr );
QString str = nam.c_str();
if ( str.startsWith( "#" ) )
И все отлично работает. Символ может быть не один, а последовательность символов.

А вообще startsWith и endsWith для меня как палочка выручалочка.

Вот вроде устаревшие варианты left()  и right(). Если не сложно поясните как бы этот код с этими функциями выглядел?


Название: Re: string и startsWith
Отправлено: mutineer от Май 21, 2013, 10:14
Почему left() и right() устаревшие и как они вообще связаны с startsWith() ?


Название: Re: string и startsWith
Отправлено: Spark от Май 21, 2013, 10:40
Почему left() и right() устаревшие и как они вообще связаны с startsWith() ?
Наверное это все относительно. Относительно startsWith более старые.
Код:
if ( str.left(1) == "h" )


Название: Re: string и startsWith
Отправлено: mutineer от Май 21, 2013, 10:45
Можно их и так использовать, да. Можно и под кроватью спать. Но основное их предназначение все-таки не заменять startsWith, а получать кусок строки


Название: Re: string и startsWith
Отправлено: Spark от Май 21, 2013, 10:49
Можно их и так использовать, да. Можно и под кроватью спать. Но основное их предназначение все-таки не заменять startsWith, а получать кусок строки
Мои поступки нельзя строго судить :). Я ведь только учусь. К тому же не я это выдумал, в процессе поиска нашел в справочном материале. С другой стороны, если это работало, то почему сразу - не стоит?
Впрочем вывод.  Если альтернатив для startsWith не было, значит устарело, по крайней мере для такого применения.


Название: Re: string и startsWith
Отправлено: mutineer от Май 21, 2013, 10:58
Потому что left создает целый новый объект QString, который тут же и уничтожается. Если чем-то не нравится startsWith, то уж лучше заменить его хотя бы на at()


Название: Re: string и startsWith
Отправлено: SimpleSunny от Май 21, 2013, 12:18
Код
C++ (Qt)
QString str = word.c_str();

А при наличии '\0' в середине строки сколько времени потратим на отладку?

QString   fromStdString ( const std::string & str )
QString   fromStdWString ( const std::wstring & str )


Название: Re: string и startsWith
Отправлено: Spark от Май 26, 2013, 04:19
Ребят подскажите еще такой момент.
Тот же участок кода:
Код:
string nam = Utf8::encode( node.Attr );
QString str = nam.c_str();
if ( str.startsWith( "#" ) )
{
result += "контент " + nam;
}

- допустим переменная nam = " происходит от лат. слова или гр. слова "
Прежде чем выдать переменную nam, как лат. заменить на латинского и гр. на греческого. Учитывая, что сокращений может быть несколько разных в переменной, но сокращения заранее известны. Что в самой переменной мне не известно. Ее вводит пользователь. Но известно какие могут встречаться сокращения.
- И второй вариант. Опять же, как прежде чем выдать nam убрать из нее последний символ.

Очень бы хотелось, что бы решения были, так же, как можно проще и доступным языком.
Буду благодарен.


Название: Re: string и startsWith
Отправлено: thechicho от Май 26, 2013, 04:29
Код:
    QString str1 = "лат.";
    str1.replace("лат.", "латинского");
    QString str2 = "лат.";
    str2.chop(1);


Название: Re: string и startsWith
Отправлено: Spark от Май 26, 2013, 06:33
thechicho
Спасибо за скорый ответ.

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

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

- Как из переменной типа string удалить последний (последние) символ?
- Как в строке типа string сделать подмены цепочек символов?


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


Название: Re: string и startsWith
Отправлено: thechicho от Май 26, 2013, 06:40
//типа string
//Qt > Вопросы новичков
форумом не ошиблись?

ищите сами, или ждите пока m_ax подскажет


Название: Re: string и startsWith
Отправлено: Spark от Май 26, 2013, 06:59
thechicho
Как я писал, самый, что ни на есть новичок, причем не только с QT, С++ но и в программировании как таковом. Поэтому прошу отнестись с пониманием. Мне сложно ориентироваться куда следует адресовать подобные вопросы. В свое время и вам кто то помогал, терпеливо отвечая на вопросы.

Ну а мой способ обучения прост. Видеокурсы, справочники, потихоньку.
Установил Qt 4.8.4 + MinGW 4.4 + Qt Creator 2.6.2. Взял исходник и правлю код, разбираясь, что к чему. Если пока, что то не поддается логическому осмыслению - задаю вопросы.
Так, что еще раз извините, если что не так.


Название: Re: string и startsWith
Отправлено: thechicho от Май 26, 2013, 08:27
//В свое время и вам кто то помогал, терпеливо отвечая на вопросы.
хаха, меня забанили в свое время за такие вопросы. не всем нравятся тупые (элементарные) вопросы :)

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

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


Название: Re: string и startsWith
Отправлено: Igors от Май 26, 2013, 09:30
В данном случае нет необходимости конвертации QString в string.

- Как из переменной типа string удалить последний (последние) символ?
- Как в строке типа string сделать подмены цепочек символов?
Вы можете использовать советы выше или написать свои утилиты - прекрасная возможность потренироваться в языке. Если опыта пока мало, то последний вариант заметно лучше


Название: Re: string и startsWith
Отправлено: Spark от Май 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 + "!";
}
Вроде как сработало. Пойдет?

И все таки было бы интересно знать, а как бы этот кусочек кода можно было сделать по другому.


Название: Re: string и startsWith
Отправлено: Spark от Май 26, 2013, 10:41
- Как из переменной типа string удалить последнюю (последние) символы?
- Как в строке типа string сделать подмены цепочек символов?
Я уже приводил эту ссылку выше. Используйте boost: http://www.boost.org/doc/libs/1_53_0/doc/html/string_algo/quickref.html
Т.е. имеется ввиду надо подключить дополнительную библиотеку boost или это справочник по стандартной библиотеке C++? Вы уж извините, если я что не так ляпнул :).


Название: Re: string и startsWith
Отправлено: Igors от Май 26, 2013, 10:59
Вроде как сработало. Пойдет?
Ну Вы же сами понимаете - это халтура. Давайте перельем строку из одного представления в другое, где есть удобные утилиты, а потом обратно. Да, делов неск секунд, но ведь платим оптимальностью. Вот кто-то ускорит Ваш код раз так в 20 и скажет типа "там какой-то лошара писал, с пых-пых наверно". И, поверьте, будет неприятно.

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

Т.е. имеется ввиду надо подключить дополнительную библиотеку boost
Да, но бояться не стоит - обычно достаточно скопировать boost хедеры, вот и все подключение. Эта один из самых мощных и (заслуженно) престижных tool


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

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


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

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


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

Программу я крою месяца два, а язык начал учить с неделю назад :). Вот такое положение дел. Конечно же есть какие то навыки в программировании, иначе бы не мог ничего сделать. Но они в основном поверхностные.


Название: Re: string и startsWith
Отправлено: Spark от Май 26, 2013, 11:57
не совсем понятно зачем было сразу лезть в Qt если нету даже знания языка
Честно говоря для меня это не менее странный вопрос. А куда надо было лезть :)?
Знания у меня есть какие то. Практики нет. Разбирая открытый код, обучение происходит гораздо быстрее. То, что я делаю написано с использованием Qt. Попробовал - понравилось. Проблем в плане страха нет никаких. Сложностей не вижу. Осознаю только, что понадобится некоторое время, что бы уложить структуру в голове.
Ну в обще флудить точно не хотелось бы.
А при случае покажу, что уже сделано и что хочу сделать. Не так уж и плохо. Это при том, что сделано большая часть без знания C++ и как такового Qt.  Просто как бы на блочном уровне, путем перестановки переменных, логики и основываясь на базовых знаниях о переменных, условиях... Какие то языки я учил когда-то :).


Название: Re: string и startsWith
Отправлено: Igors от Май 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;
}
 
Писал прямо здесь, возможны ошибки. Если Вы умеете писать такие ф-ции, и это Вам уже просто неинтересно - ну можно и готовым попользоваться. Но вот если не умеете - срочно учитесь, иначе окажетесь в положении той самой "обезьяны без кармана"  :)


Название: Re: string и startsWith
Отправлено: thechicho от Май 26, 2013, 12:52
//Я понимаю, что преобразований в идеале не должно быть. Только в крайних случаях.
ога, давайте все и всё будем писать на ассемблере, чтобы полюбому работало быстро. нифига вы не понимаете :)

все зависит от задачи и требований. для обучения да, полезнее будет сделать с помощью чистого c++.
на практике же надо искать оптимальные пути. нет смысла писать велосипеды и тратить время на базовые вещи.
java, c#, qt - куча готовых классов. используйте, раз решили писать с помощью qt

если же вы собираетесь писать программы, которые должны работать максимально быстро (быстрее на какие-нибудь 20 * 100500 доля секунды допустим :D), пишите на ассемблере. ну можно на Си, чуть помедленнее будут работать проги, но быстрее чем на qt хаха :D хотя, мне не приходилось такие проги писать. да и в контексте string я не представляю для какой программы понадобится максимальная скорость выполнения. даже гугл на яве вроде работает :D и работает быстро, но не максимально быстро ;)


Название: Re: string и startsWith
Отправлено: Spark от Май 26, 2013, 12:54
Igors
Спасибо функцию я разберу как устроена, мне это полезно, особенно если по делу.
Конечно если есть готовые функции, то все таки в моем положении это лучше. Слишком большая вереница условий, если для каждого условия начну писать свою функцию (даже если я их вынесу в отдельный файл). На самом деле программа которую я разбираю не такая уж и простая для новичка. Примеры я упрощаю, для более точного ответа.
Сейчас для меня все таки на первом месте результат. И он должен быть скорым.
Если порассуждать. Я привык обучение начинать с общей картины к частному. В данном случае мне бы не плохо уложить структуру языка - как правильно записывать код и что к чему относится на уровне функций, классов и научиться различать их сходу (речь не о простом коде, где все на виду, а о многофайловом). А затем уже проще будет написать и свою первую функцию и свой первый класс. Возможно у меня такое мнение потому, что в общем то элементарную локигу и структуру языка я знаю не так уж и плохо в теории и способен пошагово разобрать алгоритм. Как раз сейчас меня больше смущают сами переменные с их внутренней структурой - от куда, что берется и куда поступает. Т.е. для меня это как бы блоки более низкого уровня. Ну а дальше разберу каждый блок по косточкам еще на более низком уровне. Надеюсь ясно выразился. Просто не стоит забывать, что как таковое обучение у меня (более менее серьезное) ну чуть больше недели :).
Еще раз спасибо за понимание и терпение.


Название: Re: string и startsWith
Отправлено: Spark от Май 26, 2013, 13:02
//Я понимаю, что преобразований в идеале не должно быть. Только в крайних случаях.
ога, давайте все и всё будем писать на ассемблере, чтобы полюбому работало быстро. нифига вы не понимаете :)

все зависит от задачи и требований. для обучения да, полезнее будет сделать с помощью чистого c++.
на практике же надо искать оптимальные пути. нет смысла писать велосипеды и тратить время на базовые вещи.
java, c#, qt - куча готовых классов. используйте, раз решили писать с помощью qt

если же вы собираетесь писать программы, которые должны работать максимально быстро (быстрее на какие-нибудь 20 * 100500 доля секунды допустим :D), пишите на ассемблере. ну можно на Си, чуть помедленнее будут работать проги, но быстрее чем на qt хаха :D хотя, мне не приходилось такие проги писать. да и в контексте string я не представляю для какой программы понадобится максимальная скорость выполнения. даже гугл на яве вроде работает :D и работает быстро, но не максимально быстро ;)
Вот сколько людей столько и мнений. Я ведь сейчас как ребенок воспринимаю все за чистую монету. Как прочитал или услышал в видеокурсе, так и написал. Логично бы предположить, что это и есть правда. Что ж вы хотите от изучающего язык вторую неделю :)? На сегодня мне приходится ориентироваться на авторитетное мнение, пока не появится свое мнение.
Граждане (куда уж более официальнее :)) меня хлебом не корми, а на вопросы я отвечу. Не хотел бы провоцировать флуд. Тем более он обычно ведет к ссорам.


Название: Re: string и startsWith
Отправлено: thechicho от Май 26, 2013, 13:09
когда идет один элементарный вопрос за другим тема становится флудом.

//авторитетное мнение
оно банально просто - читайте книги с теорией по 100500 страниц. пополняйте ряд авторитетных книжных теоретиков :)

или переходите на сторону зла - учитесь пользоваться готовыми инструментами, без траты времени на понимание основ :D


Название: Re: string и startsWith
Отправлено: Spark от Май 26, 2013, 13:40
когда идет один элементарный вопрос за другим тема становится флудом.

//авторитетное мнение
оно банально просто - читайте книги с теорией по 100500 страниц. пополняйте ряд авторитетных книжных теоретиков :)

или переходите на сторону зла - учитесь пользоваться готовыми инструментами, без траты времени на понимание основ :D
Я занимаюсь вопросами самообразования. И есть два важных основополагающих момента в процессе самообучения:
- Научись не стесняться задавать вопросы.
- Не бывает глупых вопросов, бывают глупые ответы.

Когда ученик задает конкретный вопрос, в соответствующей ветке, а профи отвечает по существу, то это никак флудом не назовешь. А то, что мы сейчас с вами делаем (провокационный топик и соответственно ответ) - флуд чистой воды.

Я ведь не спорю с вами. Я вполне согласен, что готовыми инструментами удобно пользоваться. Собственно так и поступаю. Иду от общего к частному. Мне так удобнее и быстрее. Это всегда работало, да и интереснее.



Название: Re: string и startsWith
Отправлено: Spark от Май 26, 2013, 13:45
Сейчас мне бы было полезнее узнать (чуть поконкретнее) как подключить библиотеку boost. Конечно сам смогу разобраться, но если все таки найдется желающий пояснить, если не долго, буду благодарен.


Название: Re: string и startsWith
Отправлено: thechicho от Май 26, 2013, 13:54
на ваш конкретный вопрос, были даны конкретные ответы, далее вы сами начали флуд, я его поддержал, не более того.

//Я ведь не спорю с вами. Я вполне согласен, что готовыми инструментами удобно пользоваться.
нет спора, есть флуд) всем же понятно, что надо с теории начинать. но вы решили пойти легким путем. перешли на сторону зла так сказать :D
смешно просто читать, как вы соглашаетесь с противоположными точками зрения.

п.с. я так же как и вы пытался в свое время получать помощь в режиме онлайн на форуме, что было встречено местными книжными теоретиками в штыки :)


Название: Re: string и startsWith
Отправлено: Spark от Май 26, 2013, 14:00
на ваш конкретный вопрос, были даны конкретные ответы, далее вы сами начали флуд, я его поддержал, не более того.

//Я ведь не спорю с вами. Я вполне согласен, что готовыми инструментами удобно пользоваться.
нет спора, есть флуд) всем же понятно, что надо с теории начинать. но вы решили пойти легким путем. перешли на сторону зла так сказать :D
смешно просто читать, как вы соглашаетесь с противоположными точками зрения.

п.с. я так же как и вы пытался в свое время получать помощь в режиме онлайн на форуме, что было встречено местными книжными теоретиками в штыки :)
Я просто учту ваши ошибки и перестану отвечать на провокации. И пусть это будет последний флуд с моей стороны. И если меня и забанят, то вовсе не за вопросы, а именно за флуд.

И тем не менее спасибо всем за ответы и советы. Сегодня для себя, с вашей помощью, я сделал большой шажочек и могу двигаться еще дальше :).


Название: Re: string и startsWith
Отправлено: Igors от Май 26, 2013, 14:16
Сейчас мне бы было полезнее узнать (чуть поконкретнее) как подключить библиотеку boost. Конечно сам смогу разобраться, но если все таки найдется желающий пояснить, если не долго, буду благодарен.
Качаете буст и копируете его в какой-то фолдер, напр MyBoost. Прописываете этот фолдер так чтобы виделись хедеры - в path, include directories, смотря на чем Вы работаете. Использование
Код
C++ (Qt)
#include boost/algorithm/hex.h
 
Просто чтобы компилятор видел фолдер MyBoost (внутри которого есть boost)

Конечно если есть готовые функции, то все таки в моем положении это лучше.
...
Сейчас для меня все таки на первом месте результат. И он должен быть скорым.
Если бы готовые ф-ции (напр replace) существовали для std::string, то, поверьте, никто не упустил бы возможности блеснуть своими знаниями и "ткнуть носом" старого сишника городящего велосипед  :) Готовые ф-ции лучше в любом положении, вопрос в том что делать когда их нет. Часто (напр в Вашем случае) время поисков, ну скажем, "соразмеримо" с написанием своего.  Лично я придерживаюсь взгляда "свой код всегда лучше" и не особо упорствую в изысканиях. Нету - ну напишу сам, на то и программист


Название: Re: string и startsWith
Отправлено: Spark от Май 26, 2013, 14:22
Качаете буст и копируете его в какой-то фолдер, напр MyBoost. Прописываете этот фолдер так чтобы виделись хедеры - в path, include directories, смотря на чем Вы работаете. Использование
Код
C++ (Qt)
#include boost/algorithm/hex.h
 
Спасибо, вроде как ясно. Подключу и попробую, что нибудь начать использовать. Начинать все равно когда нибудь надо.


Название: Re: string и startsWith
Отправлено: m_ax от Май 26, 2013, 14:48
Сейчас мне бы было полезнее узнать (чуть поконкретнее) как подключить библиотеку boost. Конечно сам смогу разобраться, но если все таки найдется желающий пояснить, если не долго, буду благодарен.
Качаете буст и копируете его в какой-то фолдер, напр MyBoost. Прописываете этот фолдер так чтобы виделись хедеры - в path, include directories, смотря на чем Вы работаете. Использование
Код
C++ (Qt)
#include boost/algorithm/hex.h
 
Просто чтобы компилятор видел фолдер MyBoost (внутри которого есть boost)


Код
C++ (Qt)
#include <boost/algorithm/string.hpp>
 


Если бы готовые ф-ции (напр replace) существовали для std::string, то, поверьте, никто не упустил бы возможности блеснуть своими знаниями и "ткнуть носом" старого сишника городящего велосипед  :) Готовые ф-ции лучше в любом положении, вопрос в том что делать когда их нет. Часто (напр в Вашем случае) время поисков, ну скажем, "соразмеримо" с написанием своего.  Лично я придерживаюсь взгляда "свой код всегда лучше" и не особо упорствую в изысканиях. Нету - ну напишу сам, на то и программист

Вообще то, для std::string есть метод replace, даже несколько перегруженных вариантов: http://www.cplusplus.com/reference/string/string/replace/ (http://www.cplusplus.com/reference/string/string/replace/)

to Spark если хотите чему-нибудь научится, выкиньте из головы такие взгляды как: "Лично я придерживаюсь взгляда "свой код всегда лучше"

И потом, с++ - это нечто большее, чем просто изучение конкретных библиотек..
Я бы советовал начать с хорошей литературы, а не с видеоуроков.. Например, Брюс Экель очень хорошо пишет, рекомендую его два тома "Философия C++". Когда я прочёл первый том, я думал, что уже всё: второй том зря купил.. Но позже, после прочтения второго, пришло осознание, что всё только начинается)     


Название: Re: string и startsWith
Отправлено: thechicho от Май 26, 2013, 15:23
//std::string есть метод replace
он не работает так же просто, как qt'шный метод. для его использования нужны значения (позиции, длина), которые придется высчитывать самому


Название: Re: string и startsWith
Отправлено: kambala от Май 26, 2013, 15:30
2Spark: ИМХО то, что ты сейчас демонстрируешь на форуме — это банальная лень. неважно новичок ты или нет, первое, что надо сделать — уделить несколько минут чтению документации по интересующему тебя классу (пусть это даже будут просто названия методов — по ним сразу станет ясен их функционал) и/или гуглению.

как подключить буст (или любую другую библиотеку)? открывается оф. сайт, ищется getting started или аналогичный раздел (это делается за считанные секунды) и читается. http://www.boost.org/doc/libs/1_53_0/more/getting_started/windows.html вот, всё подробно расписано.

многие новички считают, что «мне проще спросить на форуме, чем самому попытаться». по-моему форум — это уже последняя инстанция куда надо писать, когда уже вообще ничего не получается.


Название: Re: string и startsWith
Отправлено: Spark от Май 26, 2013, 15:31
И потом, с++ - это нечто большее, чем просто изучение конкретных библиотек..
Я бы советовал начать с хорошей литературы, а не с видеоуроков.. Например, Брюс Экель очень хорошо пишет, рекомендую его два тома "Философия C++". Когда я прочёл первый том, я думал, что уже всё: второй том зря купил.. Но позже, после прочтения второго, пришло осознание, что всё только начинается)     
Чуть не удержался и написал портянку. Даже жаль было стирать. Ограничусь:
Я не против хорошей литературы, хороших видеоуроков... Все это есть. Но я никогда не зацикливался на том, что надо изучать все шаг за шагом с низу. При таком подходе многие выдыхаются не дойдя до конкретной задачи. У меня есть конкретная цель - перелопатить код под свои запросы. Есть инструмент Qt 4.8.4 + MinGW 4.4 + Qt Creator 2.6.2. Открыл код, поменял, что мне надо и собрал. Не показалось сложным. Все дальше разбираем постепенно код начиная с более крупных блоков. По поводу видеокурсовю. На начальном этапе лучше 100 раз увидеть и услышать, чем несколько месяцев читать. После нормальных видеокурсов намного проще читать.


Название: Re: string и startsWith
Отправлено: Spark от Май 26, 2013, 15:38
2Spark: ИМХО то, что ты сейчас демонстрируешь на форуме — это банальная лень.
IMHO А вы не задумывались над тем, что я могу с большим успехом сказать вам то же самое?
Ярлычки вешать проще, чем начинать исправлять себя.


Название: Re: string и startsWith
Отправлено: thechicho от Май 26, 2013, 15:45
Spark, читая ваши последния сообщения, вспоминается заповедь админа контер-страйк)

1. админ всегда прав;
2. если админ не прав, смотри п.1
аля сам дурак)

вам по делу все говорят, спорить с банальными догмами книжных теоретиков бесполезно.
задавайте конкретные вопросы, либо продолжаем флуд :D


Название: Re: string и startsWith
Отправлено: Spark от Май 26, 2013, 15:52
thechicho
По делу тут несколько топиков. Спасибо! Я записываю :).
По поводу флуда вы правы - побережем силы для вопросов по делу :).
На самом деле я бы за это время поправил код используя новые знания. Но видимо флуд нужен как разрядка. Эмоции иногда необходимо выплескивать :). Будем считать, что сегодня выходной :).


Название: Re: string и startsWith
Отправлено: mutineer от Май 27, 2013, 10:44
http://doc.qt.digia.com/4.7/qstring.html


Название: Re: string и startsWith
Отправлено: Spark от Май 28, 2013, 11:56
http://doc.qt.digia.com/4.7/qstring.html
Спасибо. Пользовался этой справкой http://qt-project.org/doc/qt-4.8/qstring.html#replace
Русскоязычный вариант http://qtdocs.narod.ru/4.1.0/doc/html/index.html
Мои маленькие задачи решены. Использовал, конечно, готовые функции.
Может другим новичкам будет полезно видеть решение:
Код:
string kont = "Готовые библ. использовать проще чем сост. свои.";
QString str = kont.c_str();

str.replace(QString("библ."), QString("библиотеки"));
str.replace(QString("сост."), QString("составлять"));

string text = str.toStdString();

string kontent = string( "Однако: " ) + text;

Дело не только в этих задачках, а вообще дискуссия (не такая уж и длинна) помогла мне осознать механизм манипуляции функциями классов. Кашу в головое чуток разгреб. И теперь я снова могу двигаться дальше, вооружив себя с вашей помощью мощным инструментом. Переставляя кирпичики можно, вполне, экспериментировать самостоятельно. Конечно, вопросы на этом не закончатся, но многое уже можно решить самостоятельно.
Спасибо всем за помощь и советы.


Название: Re: string и startsWith
Отправлено: Old от Май 28, 2013, 12:25
Код
C++ (Qt)
...
QString str = kont.c_str();
...
 
Так не совсем правильно. Это будет работать до поры до времени.
Вам в этой теме об этом уже писали (как и о последствиях) и даже написали как сделать правильно. ;)


Название: Re: string и startsWith
Отправлено: thechicho от Май 28, 2013, 12:29
Код:
str.replace(tr("библ."), tr("библиотеки"));

зачем новичкам советовать говнокод :)
философия qt обязывает использовать функцию tr() для работы с текстом
QString QObject::tr ( const char * sourceText, const char * disambiguation = 0, int n = -1 ) [static]

но я на это забил, так как мне не нужно переводить на другой язык.
перевел исходники в utf-8
в main.cpp написал
Код:
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForTr(codec);
    QTextCodec::setCodecForLocale(codec);
и спокойно пишу так:
Код:
str.replace("библ.", "библиотеки");


Название: Re: string и startsWith
Отправлено: Spark от Май 28, 2013, 12:59
Так не совсем правильно. Это будет работать до поры до времени.
Вам в этой теме об этом уже писали (как и о последствиях) и даже написали как сделать правильно. ;)
Лучше бы все таки написали как надо правильно. Все таки от этого больше пользы, чем разгадывать загадки понятные не новичкам.
Как понял, вы об этом:
Код
C++ (Qt)
QString str = word.c_str();

А при наличии '\0' в середине строки сколько времени потратим на отладку?

QString   fromStdString ( const std::string & str )
QString   fromStdWString ( const std::wstring & str )
Я не знаю чем для меня грозит "наличии '\0' в середине строки"
Во вторых я не понял как использовать:
QString   fromStdString ( const std::string & str )
QString   fromStdWString ( const std::wstring & str )

Пробовал не получалось.
Ok! Будем работать над ошибками.


Название: Re: string и startsWith
Отправлено: mutineer от Май 28, 2013, 13:02
Во вторых я не понял как использовать:
QString   fromStdString ( const std::string & str )
QString   fromStdWString ( const std::wstring & str )

Пробовал не получалось.

Наверно ты неправильно пробовал и где-то в коде ошибся


Название: Re: string и startsWith
Отправлено: thechicho от Май 28, 2013, 13:22
QString QString::fromStdString ( const std::string & str ) [static]
static говорит о том, что функцию можно использовать без создания объекта QString

Код:
QString str = QString::fromStdString(kont);


Название: Re: string и startsWith
Отправлено: Igors от Май 28, 2013, 13:34
Так не совсем правильно. Это будет работать до поры до времени.
Вам в этой теме об этом уже писали (как и о последствиях) и даже написали как сделать правильно. ;)
Что-то эта правильность смахивает на тупенькую зубрежку и вдалбливание букваря/талмуда  :)
Вы серьезно решили поддерживать строки с нулями внутри? Тогда пожалуйста заставьте работать напр это
Код
C++ (Qt)
int main( int, char** )
{
const unsigned char ch[] = { 'a', 'b', 'c', 0, 'd', 'e', 'f' };
QByteArray ba;
for (int i = 0; i < sizeof(ch); ++i) ba += ch[i];
qDebug() << ba.size() << ba;
 
QString str(ba);
qDebug() << str.size() << str;
return 0;
}


Название: Re: string и startsWith
Отправлено: Spark от Май 28, 2013, 13:56
Во вторых я не понял как использовать:
QString   fromStdString ( const std::string & str )
QString   fromStdWString ( const std::wstring & str )

Пробовал не получалось.

Наверно ты неправильно пробовал и где-то в коде ошибся

Спасибо, что заставили подумать. Некоторые функции в справочнике с примерами. С ними было проще. Здесь чуть больше понадобилось поломать голову и еще чуток осознать происходящее :).

Код:
string kont = "Готовые библ. использовать проще чем сост. свои.";
QString str = QString::fromStdString( kont );

str.replace(QString("библ."), QString("библиотеки"));
str.replace(QString("сост."), QString("составлять"));

string text = str.toStdString();

string kontent = string( "Однако: " ) + text;

Вроде как работает.
На этот раз ошибки есть?

P.S. Хотя смотрю, пока доходило :), появились и более конкретные примеры. Возможно, самостоятельно разобраться наверное все таки было полезнее. Что то уляжется в голове.
Но все равно всем спасибо.


Название: Re: string и startsWith
Отправлено: Igors от Май 28, 2013, 13:59
Мои маленькие задачи решены. Использовал, конечно, готовые функции.
Может другим новичкам будет полезно видеть решение:
Код:
string kont = "Готовые библ. использовать проще чем сост. свои.";
QString str = kont.c_str();

str.replace(QString("библ."), QString("библиотеки"));
str.replace(QString("сост."), QString("составлять"));
QString можно было и не писать, т.к. QString имеет конструктор с аргументом const char *. По поводу качества решения с переливанием строк уже говорили. Однако впечатляет заметно изменившаяся самооценка - вот уже звучат нотки "конечно", "будет полезно"  :) А ведь с точки зрения производительности кода - говнокод был, говнокод остался. Конечно это экономит время программиста, такое решение имеет право на жизнь. Но гордиться здесь совсем нечем.

Всем понятно что без интенсивного использования тулзов сейчас просто не прожить. Но опасность в том что "поиск готовенького" съедает все время и силы программиста, на что-то другое времени просто не остается. И когда нужно действовать самостоятельно (а придется) человек уже просто разучился (если вообще когда-то умел).  


Название: Re: string и startsWith
Отправлено: Spark от Май 28, 2013, 14:16
Мои маленькие задачи решены. Использовал, конечно, готовые функции.
Может другим новичкам будет полезно видеть решение:
Код:
string kont = "Готовые библ. использовать проще чем сост. свои.";
QString str = kont.c_str();

str.replace(QString("библ."), QString("библиотеки"));
str.replace(QString("сост."), QString("составлять"));
QString можно было и не писать, т.к. QString имеет конструктор с аргументом const char *. По поводу качества решения с переливанием строк уже говорили. Однако впечатляет заметно изменившаяся самооценка - вот уже звучат нотки "конечно", "будет полезно"  :) А ведь с точки зрения производительности кода - говнокод был, говнокод остался. Конечно это экономит время программиста, такое решение имеет право на жизнь. Но гордиться здесь совсем нечем.

Всем понятно что без интенсивного использования тулзов сейчас просто не прожить. Но опасность в том что "поиск готовенького" съедает все время и силы программиста, на что-то другое времени просто не остается. И когда нужно действовать самостоятельно (а придется) человек уже просто разучился (если вообще когда-то умел).  
Изменения самооценки никакой не произошло. Как был неучем так неучем и остался :).
Ведь из всего топика для меня, пожалуй, важен не сам код, а то, что я научился пользоваться готовыми функциями на кирпичному уровне :). Теперь можно и изнутри посмотреть как они устроены. А там глядишь и сам напишу свою первую функцию простенькую и смогу ее использовать. Все таки метод от общего к частному действует эффективнее. Намного интереснее.

На счет переливания я уже писал, что если бы программа с нуля делалась, то другое дело. А здесь я ковыряю чужой код. И программа не для новичков. Сознательно упрощаю примеры, что бы получить только выжимку в ответах. Но тот модуль который я ковыряю, вполне осознаю и не плохо получается подогнать для своих нужд и нужд страждущих :). С виду выглядит не плохо и работает без эксцессов. Изнутри буду чистить по мере набора опыта. И в общем то постепенно становится видно, где насорил в коде.

А вообще ситуация напоминает как и везде. Сначала профи пишут, что это очень просто, а затем начинают спорить, как это просто сделать :).

А я так и не совсем понял. Оба варианта кода можно использовать. Или второй предпочтительней?

Спасибо за помощь. Для меня эта помощь на данном этапе куда лучше лекций.


Название: Re: string и startsWith
Отправлено: Old от Май 28, 2013, 14:34
Что-то эта правильность смахивает на тупенькую зубрежку и вдалбливание букваря/талмуда  :)
Это впечатление у вас из-за вашей некомпетентности. Не переживайте. :)
Почитайте что нибудь про многобайтовые кодировки. Посмотрите на реализацию метода fromStdString...
Для того, что бы программировать качественный софт, нужны знания. А подставлять разные методы класса и свою программу в надежде, что все заработает - опасно.
Оно как правило вначале работает, а немного внешние условия поменяются (ее запустит китайский студент) и она перестает работать.

Вы серьезно решили поддерживать строки с нулями внутри? Тогда пожалуйста заставьте работать напр это
Это что такое? Очередное ваше произведение? Что с ним не так?


Название: Re: string и startsWith
Отправлено: thechicho от Май 28, 2013, 14:36
//А я так и не совсем понял. Оба варианта кода можно использовать. Или второй предпочтительней?

Цитировать
А ведь с точки зрения производительности кода - говнокод был, говнокод остался. Конечно это экономит время программиста, такое решение имеет право на жизнь. Но гордиться здесь совсем нечем.

Код:
string kont = "Готовые библ. использовать проще чем сост. свои.";
QString tmp = QString::fromStdString(kont);

tmp.replace("библ.", "библиотеки");
tmp.replace("сост.", "составлять");
tmp.prepend("Однако: ");

kont = tmp.toStdString();


Название: Re: string и startsWith
Отправлено: Spark от Май 28, 2013, 14:45
thechicho
Все ясно. Спасибо за конкретный ответ. Поменять не долго.


Название: Re: string и startsWith
Отправлено: Old от Май 28, 2013, 16:00
А я так и не совсем понял. Оба варианта кода можно использовать. Или второй предпочтительней?
Второй предпочтительней, но тоже не идеал. :)
На самом деле здесь при конвертации строки нужно использовать явный кодек (объект QTextCodec). Но пока я бы тебе голову этим не забивал. :)


Название: Re: string и startsWith
Отправлено: Spark от Май 28, 2013, 16:35
А я так и не совсем понял. Оба варианта кода можно использовать. Или второй предпочтительней?
Второй предпочтительней, но тоже не идеал. :)
На самом деле здесь при конвертации строки нужно использовать явный кодек (объект QTextCodec). Но пока я бы тебе голову этим не забивал. :)
Спасибо. Понял.
На данном этапе для меня важно, что бы хотя бы с технической точки зрения (работоспособности и надежности) было верно. Все таки я познаю азы. С набором опыта сам должен начать понимать, как надо было лучше и исправлять ошибки. И в этом плане эта ветка (вернее ее участники) мне помогла осознать больше, что же я делаю :).
И еще раз спасибо за то, что научили пользоваться функциями. Самостоятельно это заняло бы гораздо больше времени. Конечно же придется осознать и подробности - как они устроены. Но теперь хватает материала, что бы двигаться дальше и в обучении и к поставленной цели в плане - подогнать программу под свои запросы.
И хотелось бы, что понимали почему я так пишу. Ну поставьте себя на моем месте, как бы вы ощущали себя после недели обучения. Конечно для меня каждый новый осознанный шаг - это победа. В теории я может и знаю, что то. Ну например о существовании классов и функций и как они пишутся :), но это конечно не дает мне права считать себя программистом. И уж конечно через неделю сложно с ходу различать где, что и определять по сухой справочной информации, а как это выглядит в коде на самом деле. Но теперь я смотрю на листинг и для меня все меньше белых пятен и все больше понимаю, что хотел сказать программист :), а если не ясно, то в справочник могу заглянуть более осознанно и ваши советы меня уже не так сбивают с толку :). Вот такая лирика :).


Название: Re: string и startsWith
Отправлено: Igors от Май 28, 2013, 17:34
Это впечатление у вас из-за вашей некомпетентности. Не переживайте. :)
Почитайте что нибудь про многобайтовые кодировки. Посмотрите на реализацию метода fromStdString...
Моя некомпетентность (которая намного лучше Вашего зазнайства) говорит что для таких кодировок нужен std::wstring, а fromStdString китайскому студенту никак не поможет  :)

Это что такое? Очередное ваше произведение? Что с ним не так?
Да то что для строк с нулями внутри очень многое будет работать не так как ожидалось. Поэтому не надо делать вид, мол, fromStdString что-то решает, это мертвому припарка.

Для того, что бы программировать качественный софт, нужны знания.
Да говорите уж прямо "найти готовое и переписать", Вы ведь только этим и занимаетесь, чего скрывать :)


Название: Re: string и startsWith
Отправлено: thechicho от Май 28, 2013, 18:03
//Да говорите уж прямо "найти готовое и переписать", Вы ведь только этим и занимаетесь, чего скрывать
а зачем писать то, что уже есть? зачем придумывать алгоритм, если уже есть рабочий? если вы получаете моральное удовольствие, написав что-то готовое, используя низкоуровневые функции, которые кто-то до вас уже написал, кстати говоря, то это ваши проблемы. это не задачи программистов. это задачи программистов-ученых, архитекторов. если у вас завышенное чсв, то мы то здесь причем. мы обычные кодеры, у нас свои задачи и свои решения этих задач. к нам свои требования.
вот вы сами то что спроектировали, придумали? это вы спроектировали архитектуру STL?


Название: Re: string и startsWith
Отправлено: Old от Май 28, 2013, 18:04
Моя некомпетентность (которая намного лучше Вашего зазнайства) говорит что для таких кодировок нужен std::wstring, а fromStdString китайскому студенту никак не поможет  :)
Чего это вдруг? Вы знаете между ними разницу? Похоже что нет. ;)
В string спокойно может лежать UTF-16 и с ним нормально можно будет работать. Если знать как.

Да то что для строк с нулями внутри очень многое будет работать не так как ожидалось.
Конечно, все ваши поделки.

Да говорите уж прямо "найти готовое и переписать", Вы ведь только этим и занимаетесь, чего скрывать :)
Не-не готовое переписываете только вы. Что и демонстрируете в каждой теме. :)
Но, к сожалению, все ваши велики не дотягивают по функциональности и на 10% до тех стандартных решений, которые вы хотите повторить. Отсюда и вся ваша не любовь в стандартным решениям.
Смотрите, когда передо мной стоит задача, я продумываю ее решение в голове, сажусь и пишу ее реализацию используя стандартные средства. Дальше я провожу тесты, анализирую, что я могу улучшить алгоритмически. Потом только идет профилировшик, в котором я смотрю тонкие места и если я вижу, что этими местами являются стандартные средства, то я переписываю их оптимально для конкретной задачи.
У вас подход другой, вы садитесь и вместо решения задачи, пишите в течении недели кучу своих плохо работающих велосипедов, потом дело доходит(?) до решения непосредственной задачи, которая решается хоть как нибудь (неделю то уже потратили), а потом начинается ваша традиционная "оптимизация" с отказом от конструкторов, каставанием к простым указателям и т.д., которая дает сущие копейки по сравнению алгоритмической оптимизацией (на которую времени/знаний не хватило) и наконец, вы довольный собой выходите сюда и с видом эксперта начинаете рассказывать о "ущербности готовых решениях". Я не чего не пропустил? :)


Название: Re: string и startsWith
Отправлено: Spark от Май 28, 2013, 18:44
Граждане берегите здоровье! Оно вам еще пригодиться. Не растрачивайте его на пустяки.
Ну а если много свободного времени, надоело работать только на заказы, хочется чего то для души, то есть вполне приличная тема для самовыражения своих творческих наклонностей. Может кому и придется по душе. Давно искал честных единомышленников.


Название: Re: string и startsWith
Отправлено: Igors от Май 28, 2013, 19:50
Смотрите, когда передо мной стоит задача, я продумываю ее решение в голове, сажусь и пишу ее реализацию используя стандартные средства. Дальше я провожу тесты, анализирую, что я могу улучшить алгоритмически. Потом только идет профилировшик, в котором я смотрю тонкие места и если я вижу, что этими местами являются стандартные средства, то я переписываю их оптимально для конкретной задачи.
У вас подход другой, ...
Ах какой Вы молодец! :)  Но давайте будем более конкретны. Возьмем тот же самый пример  для std::string. Сколько я буду писать find_replace? Ну минут 5-10. Хорошо, пусть где-то ошибся, еще столько на отладку. Ладно, пусть еще нужны какие-то утилы, да, с пол-дня. Переживу, разве это проблема/катастрофа? А сколько Вы будете бегать-искать? Вот уж не знаю. Где же Ваше решение на бусте ? Что-то не наблюдаю, было бы интересно.

А "зависимость" таскать? Уж на что хорош буст - и то давеча получил по рогам с переходом на MSVC 2012. Перелить в QString - много ума не надо, так ведь файл стал зависим - теперь уже без Qt не ходит. Потребуется реализация без UI или с др UI - и приплыли. Из-за чего? Крошечных пионерских утилит?

Самое интересное что писать какие-то утилы все равно придется. Ну вот недавно

- Есть начальное имя файлa, напр MyFile.txt
- Если файл с таким именем уже существует, изменить имя на MyFile copy.txt
- Если MyFile copy.txt уже существует, изменить имя на MyFile copy 2.txt
- и.т.д

Может и здесь будете искать готовое? Я вижу что в этом стремлении Вы уже дошли до полного абсурда  :)


Название: Re: string и startsWith
Отправлено: thechicho от Май 28, 2013, 20:35
//Может и здесь будете искать готовое? Я вижу что в этом стремлении Вы уже дошли до полного абсурда
достаточно нескольких минут поиска как правило, чтобы найти алгоритм (решение) для элементарной задачи.
по-моему, абсурд тратить время на написание велосипеда, если не стоит задача максимальной скорости работы кода.
и полнейший абсурд, что вы навязываете вашу точку зрения так, будто это неприложная истина.
повторюсь, если вам нравится ваш стиль программирования, это ваши проблемы. это не значит, что так должны делать все.
вы хоть что-то стоящее написали, что могли бы использовать другие в своей работе? что-то я ничего такого не встречал.
но я встретил qt. и qt мне не навязывает, что единственно верный способ программирования - это использование qt. в отличие от вас.
идея перевести string в QString была изсходя из того, что это форум, посвященный Qt. и это логично. если бы это был форум, посвященный разработке на чистом c++, то такая идея была бы нелогичной.
мне интересно, вы действительно думаете, что только вы один можете писать на чистом c++:) я тоже могу:) любой сможет, если будет такая необходимость. что вы пытаетесь доказать? покажите какой-нибудь полезный для сообщества ваш проект?


Название: Re: string и startsWith
Отправлено: Old от Май 28, 2013, 20:55
Ах какой Вы молодец! :)  Но давайте будем более конкретны. Возьмем тот же самый пример  для std::string. Сколько я буду писать find_replace? Ну минут 5-10. Хорошо, пусть где-то ошибся, еще столько на отладку. Ладно, пусть еще нужны какие-то утилы, да, с пол-дня.
Ну я не знал, что вы пишите только хелловорлды.
А теперь давайте посмотрим на это серьезней:
Мне нужно быстро написать утилитку, которая конвертирует данные из одного формата в другой.
Нужна нормальная обработка параметров командной строки - за сколько сделаете за 10-15 минут? Аналогичное бустовскому Program Options - с подобным функционалом 10-15 дней.
Теперь мне нужны конфигурационные файлы. За сколько сделаете - за 10-15 минут? Аналогичное бустовскому Property Tree - с подобным функционалом 10-15 дней.
Теперь мне нужно парсить исходные файлы и формировать из них другие текстовые файлы (заголовки). За сколько сделаете регулярку - за 10-15 минут? Аналогичное бустовскому - никогда.
Теперь мне нужно разбирать исходные файлы для своего языка сценариев и генерировать байткод. За сколько сделаете свой bison/yacc или spirit - за 10-15 минут? Никогда.
А мне нужно работу работать и такие утилитки мне иногда нужно делать по несколько в день. Вы это велосипедить будете по пол года и не отладитесь никогда. Не у всех есть столько свободного времени, а писать find_replace я в детстве отлюбил.


Название: Re: string и startsWith
Отправлено: SimpleSunny от Май 28, 2013, 21:00
Моя некомпетентность (которая намного лучше Вашего зазнайства) говорит что для таких кодировок нужен std::wstring, а fromStdString китайскому студенту никак не поможет  :)

Просто был случай. Получал я входные данные от 3й стороной в Win-1251 и почему-то иногда там был '\0' в середине. После этого пришлось учитывать.


Название: Re: string и startsWith
Отправлено: Igors от Май 28, 2013, 21:32
Мне нужно быстро написать утилитку,
Теперь мне нужны ..
Теперь мне нужно ..
Теперь мне нужно ..
Разве я предлагал писать все-все самому? Напротив, я заметил что без использования тулзоа сейчас не прожить. Так зачем жульничать и приписывать мне бог знает что? :) Просто во всем надо знать меру. Вот 2 конкретных примера: find_replace (std::string) и с именем файла. Не запираюсь, я считал и считаю что для такой мелочи запрягать тулзы непрактично, больше времени уйдет на освоение, написать самому во всяком случае быстрее. Вы со мной не согласны? Так пожалуйста, приведите грамотный (по Вашему мнению) пример реализации - используя буст или что угодно. Почему же я его еще не увидел? :)  Почему только одни общме слова и (как всегда) охаивание велосипедистов?  :)

Вообще откуда такое отношение к велосипеду? Мне кажется что освоив какие-то инструменты человек подсознательно чувствует свою зависимость от них, ну и вымещает свою неудовлетворенность на невинных жертвах :) Чем лучше мы знаем вещь - тем беспомощнее мы без нее. Что поделать, все имеет обратную сторону..


Название: Re: string и startsWith
Отправлено: Old от Май 28, 2013, 22:01
больше времени уйдет на освоение, написать самому во всяком случае быстрее.
Вот это ключевой момент. Если не знаешь ничего, то на освоение уйдет куча времени.
Достаточно один раз освоить и будете использовать все время. Вы же против самого освоения.

Так пожалуйста, приведите грамотный (по Вашему мнению) пример реализации - используя буст или что угодно.
Пожалуйста: http://www.boost.org/doc/libs/1_53_0/doc/html/string_algo/reference.html#header.boost.algorithm.string.replace_hpp

Почему только одни общме слова и (как всегда) охаивание велосипедистов?  :)
Да никто их не охаивает. Каждый из нас пишет велосипеды, каждый. Только одни их пишут из маленьких готовых кирпичиков, а другие из маленьких велосипедиков. В зависимости от наивности заказчика и наличия свободного времени у разработчика.

Вообще откуда такое отношение к велосипеду? Мне кажется что освоив какие-то инструменты человек подсознательно чувствует свою зависимость от них, ну и вымещает свою неудовлетворенность на невинных жертвах :) Чем лучше мы знаем вещь - тем беспомощнее мы без нее. Что поделать, все имеет обратную сторону..
Вы молотком пользоваться умеете? Вы сильно от него подсознательно зависите? Вымещаете свою неудовлетворенность на ком нибудь? Насколько вы беспомощны без молотка?


Название: Re: string и startsWith
Отправлено: Old от Май 28, 2013, 22:06
Разве я предлагал писать все-все самому? Напротив, я заметил что без использования тулзоа сейчас не прожить. Так зачем жульничать и приписывать мне бог знает что? :)
Ну да, здесь еще не предлагал,  а тут бах, предложил:
Вот 2 конкретных примера: find_replace (std::string)
:)


Название: Re: string и startsWith
Отправлено: Igors от Май 29, 2013, 09:23
Пожалуйста: http://www.boost.org/doc/libs/1_53_0/doc/html/string_algo/reference.html#header.boost.algorithm.string.replace_hpp
Накормили как лисица журавля :) И что я должен с этим делать? Где примерчик который можно передрать? Наверное надо продраться сквозь лес итераторов, уяснить, разобраться, вжиться во все темплейиы - и тогда наступит нирвана. Ну лозунг известный "20 лет упорного труда - 20 тысяч лет счастья"

Отсутствие рабочего примера ясно показывает что сами-то Вы этого не делали. Ну да, "кто не умеет делать - учит как надо делать"  :)


Название: Re: string и startsWith
Отправлено: Old от Май 29, 2013, 09:30
Накормили как лисица журавля :) И что я должен с этим делать? Где примерчик который можно передрать?
Ваш инфантилизм не знает границ. Там для таких как вы есть специальная страница, где на пальцах показывают: http://www.boost.org/doc/libs/1_53_0/doc/html/string_algo/usage.html#idp163394464
Потрудитесь хоть по ссылкам походить. :)

Отсутствие рабочего примера ясно показывает что сами-то Вы этого не делали. Ну да, "кто не умеет делать - учит как надо делать"  :)
Точно вы о себе подметили. Нихрена не знаете и не умеете, но как важно здесь щеки раздуваете перед новичками. :)


Название: Re: string и startsWith
Отправлено: thechicho от Май 29, 2013, 09:33
4, 5 ссылки из серча гугла решают проблему

http://stackoverflow.com/questions/1494399/how-do-i-search-find-and-replace-in-a-standard-string
http://stackoverflow.com/questions/5878775/how-to-find-and-replace-string

#include <boost/algorithm/string/replace.hpp>

std::string path("file.gz");
boost::replace_all(path, ".gz", ".zip");

но Igors считает, что так делать не надо. надо искать в доках стандартной библиотеки, а потом писать велосипед. а хотя нет. он же говорит, искать - это плохо? значит он выучил всю справку наизусть и теперь пишет вообще не используя справочники? и что же он нам предлагает? выучить всю справку наизусть!!! бугага. понятно, что это нереально и Igors ищет в справке. отсюда вывод, что он сам себе противоречит. но это его проблемы ;D


Название: Re: string и startsWith
Отправлено: Igors от Май 29, 2013, 11:00
Ваш инфантилизм не знает границ. Там для таких как вы есть ..
Точно вы о себе подметили. Нихрена не знаете и не умеете, но как важно здесь щеки раздуваете перед новичками. :)
Не сваливайтесь в дешевый базар в стиле чечичи  :)

Конечно, я ни секунды не сомневался что в дусте есть и это, и многое другое. Но почему когда человек спрашивал, то вот такого рецепта никто не показал?
Цитировать
#include <boost/algorithm/string/replace.hpp>

std::string path("file.gz");
boost::replace_all(path, ".gz", ".zip");
Вот показали бы так сразу - и вопрос был бы "исперчен". Но в том-то и дело что это выясняется только через неск страниц (а сначала Вы лишь "указали направление" какой-то ссылкой). Стоит чуть изменить задачу - напр "file.Gz" (поиск без учета регистра), и опять сходу ответа у Вас не найдется, опять надо искать-вникать. Хотя, безусловно, это должно быть.

За время Вашего поиска я напишу искомое и, вероятно, не один раз :) Что Вы выигрываете практически? По мне так ничего. К чему раздувать нездоровый ажиотаж с  мнимой "грамотностью"? Я что, взялся jpg декодировать руками? Да вроде нет, всего лишь написал утилиту с десяток строк. Почеиу/чем это плохо и почему я прямо-таки обязан чем-то пользоваться? Вообще почему использование готового кода является предметом гордости? Ведь зубрежка - удел девочек-отличниц. Или это уже не так?  :)


Название: Re: string и startsWith
Отправлено: _OLEGator_ от Май 29, 2013, 11:16
Имхо, это выглядит так:
Igors: Я не буду читать мануал, как пользоваться автомобилем, мне там ничего не понятно и искать долго. Тут все неудобно, руль какой-то, целых 3 педали. Я лучше сделаю свой автомобиль!

А вообще парни, с Igors спорить бесполезно - только время терять, в конечном итоге все скатывается в флейм, никакой конкретики. Вы зайдите в его темы, там по несколько страниц писанины и в каждой теме идет доказательства несостоятельности готовых решение - вот мой велосипед, объясните, знатоки, что не так и как нужно.


Название: Re: string и startsWith
Отправлено: m_ax от Май 29, 2013, 11:26

 Стоит чуть изменить задачу - напр "file.Gz" (поиск без учета регистра), и опять сходу ответа у Вас не найдется, опять надо искать-вникать. Хотя, безусловно, это должно быть.


Буквально, строчкой ниже:

boost::ireplace_all

Имхо, это выглядит так:
Igors: Я не буду читать мануал, как пользоваться автомобилем, мне там ничего не понятно и искать долго. Тут все неудобно, руль какой-то, целых 3 педали. Я лучше сделаю свой автомобиль!

А вообще парни, с Igors спорить бесполезно - только время терять, в конечном итоге все скатывается в флейм, никакой конкретики. Вы зайдите в его темы, там по несколько страниц писанины и в каждой теме идет доказательства несостоятельности готовых решение - вот мой велосипед, объясните, знатоки, что не так и как нужно.

Это только 6 страница.. Думаю, дальше будет интересней  8) 


Название: Re: string и startsWith
Отправлено: Bepec от Май 29, 2013, 11:27
+1 к _OLEGator_. Igors в итоге не даёт ответ даже самому себе и забывает тему :)


Название: Re: string и startsWith
Отправлено: Old от Май 29, 2013, 11:31
Не сваливайтесь в дешевый базар в стиле чечичи  :)
Это вы передергиваете.

Конечно, я ни секунды не сомневался что в дусте есть и это, и многое другое. Но почему когда человек спрашивал, то вот такого рецепта никто не показал?
Человек спросил решение, вы предложили свой велосипед. Вы молодей. Только зачем нужно было начинать хаять решения предложенные другими?
И рассказывать, что стандартные решения фигня "их мол надо знать", а свой велик "взял и написал". Я авам предложил сделать велики на выбор, или вы только копирование строк и финд_реплейс можете?
А почему вы пользуетесь методом стринга, а не пишите свои велосипеды? и чем ваш велосимед отличается от бустовского? Да только тем, что вы не знаете про бустовские и как ими пользоваться. :)


Название: Re: string и startsWith
Отправлено: Igors от Май 29, 2013, 12:07
Только зачем нужно было начинать хаять решения предложенные другими?
Та не мог я их хаять "ввиду отсутствия таковых" :) До сегодняшнего дня никаких решений предложено не было.

... и чем ваш велосимед отличается от бустовского? Да только тем, что вы не знаете про бустовские и как ими пользоваться. :)
Я же Вас не обвиняю что Вы не знаете polygons из того же буста, которым я активно пользуюсь. 
Считаю что не нужно забивать голову тем что не является необходимым (пусть и хорошим). Вот если у меня появятся проблемы, начнет получаться что-то не так - тогда вооружусь. А изучать так "на всякий случай" - по-моему неэффективно.

Имхо, это выглядит так:
Igors: Я не буду читать мануал, как пользоваться автомобилем, мне там ничего не понятно и искать долго. Тут все неудобно, руль какой-то, целых 3 педали. Я лучше сделаю свой автомобиль!
На это можно посмотреть и по-другому. А разумно ли заводить автомобиль чтобы сходить в ближайший магазин? И еще стоит подумать - а что может случиться с Вашими ногами если Вы совсем перестали ходить пешком?

Когда раздуваетесь от гордости от освоенного тулза - вспомните старый стишок (ну чуть изменил)
Цитировать
Кого сегодня мы ведем? - спросил голландский мастер Бем
Не мы ведем, а нас ведут - ему ответил Робин Гуд
:)


Название: Re: string и startsWith
Отправлено: Old от Май 29, 2013, 12:23
Та не мог я их хаять "ввиду отсутствия таковых" :) До сегодняшнего дня никаких решений предложено не было.
Так вы, по мимо документации, и сообщения других пользователей форума тоже не читаете? Загляните в начало темы, не поленитесь. ;)


Название: Re: string и startsWith
Отправлено: Igors от Май 29, 2013, 12:52
Так вы, по мимо документации, и сообщения других пользователей форума тоже не читаете? Загляните в начало темы, не поленитесь. ;)
Ну не начало, а на втором листе. Заглядывал, проходил по ссылке, видел
Цитировать
// In header: <boost/algorithm/string/predicate.hpp>

template<typename Range1T, typename Range2T, typename PredicateT>
  bool starts_with(const Range1T & Input, const Range2T & Test,
                   PredicateT Comp);
template<typename Range1T, typename Range2T>
  bool starts_with(const Range1T & Input, const Range2T & Test);
И как-то не очень ясно. Кто такие Range1T, Range2T? Что я должен вместо них подставлять? Короче - где пример? И наверное я не один такой - никто не обратил на Ваш совет внимания на последующих 3-4 листах, видимо по тем же причинам (зато как все поумнели после :)). И не надо меня стыдить, что я, мол, не хочу учиться и все такое. Глянул - что-то мутно, ладно, поехали дальше. По-другому в джунглях инета не выжить.


Название: Re: string и startsWith
Отправлено: Old от Май 29, 2013, 13:04
Ну не начало, а на втором листе.
На каком втором листе? Ответ #3 m_ax предложил свое решение, которое для вас оказалось "не таким", только тогда я вам напомнил про буст. :)

И как-то не очень ясно. Кто такие Range1T, Range2T? Что я должен вместо них подставлять? Короче - где пример?
Ну да, ну да. Документация не такая, примеров нет и вообще где картинки с кошечками и зайками? :)

(зато как все поумнели после :)).
Согласен, все те кто обратил внимание на буст - поумнели. К сожалению вам это не грозит.

Глянул - что-то мутно, ладно, поехали дальше. По-другому в джунглях инета не выжить.
Это только вам так тяжко. :)
А остальные в нем не выживают, они используют его для поиска недостающих знаний. Но вам оно и не надо никогда было. :)


Название: Re: string и startsWith
Отправлено: Igors от Май 29, 2013, 13:49
Old, ну чего Вы, скажем, "неадекватно" к этому относитесь? Какая разницв как будет реализована простенькая ф-ция? Зачем обзывать меня всяко только потому что я не использовал нечто горячо любимое Вами? :) Наивно думать что чем большим числом тулзов человек владеет - тем выше его класс. Частенько все бывает наоборот - увлекшись чудесными тулзами он напрочь забывает о деле/задаче. А попробуй ему скажи об этом - ой что будет! Он ведь "так много знает" (ну примерно как Вы  :)). Конечно было бы замечательно если бы все задачи сводились к пользованию готовым, но у меня этого почему-то никогда не происходит  ???


Название: Re: string и startsWith
Отправлено: Авварон от Май 29, 2013, 13:51
Old, ну чего Вы, скажем, "неадекватно" к этому относитесь? Какая разницв как будет реализована простенькая ф-ция? Зачем обзывать меня всяко только потому что я не использовал нечто горячо любимое Вами? :) Наивно думать что чем большим числом тулзов человек владеет - тем выше его класс. Частенько все бывает наоборот - увлекшись чудесными тулзами он напрочь забывает о деле/задаче. А попробуй ему скажи об этом - ой что будет! Он ведь "так много знает" (ну примерно как Вы  :)). Конечно было бы замечательно если бы все задачи сводились к пользованию готовым, но у меня этого почему-то никогда не происходит  ???

Есть мнение, что операции QString'а написаны оптимальнее, чем вы или я можете реализовать в своём велосипеде.


Название: Re: string и startsWith
Отправлено: Old от Май 29, 2013, 14:00
Old, ну чего Вы, скажем, "неадекватно" к этому относитесь? Какая разницв как будет реализована простенькая ф-ция? Зачем обзывать меня всяко только потому что я не использовал нечто горячо любимое Вами? :) Наивно думать что чем большим числом тулзов человек владеет - тем выше его класс. Частенько все бывает наоборот - увлекшись чудесными тулзами он напрочь забывает о деле/задаче. А попробуй ему скажи об этом - ой что будет! Он ведь "так много знает" (ну примерно как Вы  :)). Конечно было бы замечательно если бы все задачи сводились к пользованию готовым, но у меня этого почему-то никогда не происходит  ???
Скажите пожалуйста, а почему вы "неадекватно" относитесь к использованию готовых, а иногда стандартных, решений при разработке? Какая вам разница? :)

Я уже писал, мне (как и большинству разработчиков) всегда важно время затраченное на разработку, поэтому я использую стандартные/проверенные средства. Они всегда у меня по рукой и я не отвлекаюсь на написание велосипедов, а решаю конкретно задачу. А вот если меня стандартное решение не устроит, то я всегда смогу нарисовать свой велосипед. Но это будет уже после написания решения - во время оптимизации.
Это как, вы вышли рисовать закат солнца (у вас вдохновение так и прет), а вместо рисования начали затачивать 100500 разноцветных карандашей. И когда закончили это делать, оказалось что солнце давно уже село и рисовать вам уже давно не хочется. :)

Так зачем тратить время на "затачивание карандашей", когда вы их в детстве уже на затачивались и вокруг есть уже заточенные? :)

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

Есть мнение, что операции QString'а написаны оптимальнее, чем вы или я можете реализовать в своём велосипеде.
Кстати, частенько так бывает. А все почему, потому что вы "строки" делаете "по быстренькому" - потому что для вас это только одно из средств для решения вашей задачи. А другой разработчик подходит к этим "строкам" основательно, потому что эти "строки" и есть его главная задача.


Название: Re: string и startsWith
Отправлено: xokc от Май 29, 2013, 14:16
Есть мнение, что операции QString'а написаны оптимальнее, чем вы или я можете реализовать в своём велосипеде.
В общем случае, наверное, это именно так. Однако, если подходить к вопросу оптимальности с научной точки зрения, то всё будет зависеть от выбранных критериев оптимальности. Если у меня и авторов QString они одинаковые, то так оно и будет. Если нет - говорить о том чья реализация лучше - бессмысленно.


Название: Re: string и startsWith
Отправлено: thechicho от Май 29, 2013, 15:47
//Если нет - говорить о том чья реализация лучше - бессмысленно
как раз была конкретика. скорость выполнения. Igors заявил, что использование qt вредно, потому что такой код можно переписать (оптимизировать) для работы в 20 раз быстрее. потом он уже приплел то, что придется тащить зависимость (библиотеки qt) :) и, наверное, имеется еще несколько банальных примеров на готове.


Название: Re: string и startsWith
Отправлено: Igors от Май 29, 2013, 16:03
Есть мнение, что операции QString'а написаны оптимальнее, чем вы или я можете реализовать в своём велосипеде.
Пример
Цитата: cpp
str.replace("a", "b");
Изначально "а" и "b" - строки в сегменте данных, т.е. расход нулевой. Но по правилам языка срабатывают конструкторы QString - вот уже 2 malloc полетело. Ининциализация начинки QString - ну там быстро, но ведь надо зарядить содержимое, вот еще 2 malloc + перегнать в юникод. Т.е. еше до реализации, сам вызов уже довольно затратен.

Вам нужно расширять свой кругозор, когда ничего не знаешь, так и взять негде.
А может не стоит так резво судить, тем более ничего не зная о круге решаемых задач?  :)
Хотите дам задачку из моих, обещаю что никаких специальных знаний в предметной области не потребуется. И посмотрим как Вам помогут знания буста и др.  (отмажется, начнет заливать про байт-код и.т.п  :))


Название: Re: string и startsWith
Отправлено: Old от Май 29, 2013, 16:50
А может не стоит так резво судить, тем более ничего не зная о круге решаемых задач?  :)
// Щеки сейчас лопнут.  ;D
А причем здесь круг решаемых задач?

Хотите дам задачку из моих, обещаю что никаких специальных знаний в предметной области не потребуется. И посмотрим как Вам помогут знания буста и др.  (отмажется, начнет заливать про байт-код и.т.п  :))
// Ба бах, щеки лопнули.  ;D
Да, задачки давать вы мастер, вы бы научились их решать. ;)


Название: Re: string и startsWith
Отправлено: thechicho от Май 29, 2013, 16:59
//str.replace("a", "b");
//Т.е. еше до реализации, сам вызов уже довольно затратен.
интересно, когда компьютеры станут в 100500 раз мощнее и производительнее, вы будете делать такие же выводы.
интересно, наши потомки поймут, что вы имели в виду, когда программирование будет сводиться к использованию готовых элементов и все будет прекрасно и быстро работать.


Название: Re: string и startsWith
Отправлено: Igors от Май 29, 2013, 17:01
// Ба бах, щеки лопнули.  ;D
Да, задачки давать вы мастер, вы бы научились их решать. ;)
Да уж у кого лопнули - устроили кипеж по поводу 15 строк кода  :) Ладно, посмотрим на Ваше умение (щас только нарисую пару зайчиков и запостю)


Название: Re: string и startsWith
Отправлено: _OLEGator_ от Май 29, 2013, 18:39
Изначально "а" и "b" - строки в сегменте данных, т.е. расход нулевой. Но по правилам языка срабатывают конструкторы QString - вот уже 2 malloc полетело. Ининциализация начинки QString - ну там быстро, но ведь надо зарядить содержимое, вот еще 2 malloc + перегнать в юникод. Т.е. еше до реализации, сам вызов уже довольно затратен.
Все еще хуже. Это из разряда людей, которые даже умножение и деление на 2 оптимизируют байтовым сдвигом.
Главное правило оптимизации - ее надо делать там, где она действительно необходима. Нормальный заказчик не будет платить за бесполезную и трудозатратную оптимизацию, вообще сейчас дешевле и проще купить комп помощнее, чем держать и тратить деньги на таких фанатиков-оптимизаторов.


Название: Re: string и startsWith
Отправлено: Igors от Май 29, 2013, 19:03
Все еще хуже. Это из разряда людей, которые даже умножение и деление на 2 оптимизируют байтовым сдвигом. Главное правило оптимизации - ее надо делать там, где она действительно необходима. Нормальный заказчик не будет платить за бесполезную и трудозатратную оптимизацию, вообще сейчас дешевле и проще купить комп помощнее, чем держать и тратить деньги на таких фанатиков-оптимизаторов.
А разве я говорил что QString - "плохой" класс, позорно медленный, как-то призывал отказаться от его использования? Та где ж это было такое? :) Просто я заметил что скоростью он явно не блещет, что вполне норм, за удобства надо платить.

.. и проще купить комп помощнее
Впервые я услышал это от clipper'овских девочек в конце 80-х, и с той поры все то же. Жизнь показала что если ресурсы бездарно разбазариваются - мощность компа не спасает.


Название: Re: string и startsWith
Отправлено: thechicho от Май 29, 2013, 19:24
//А разве я говорил что QString - "плохой" класс, позорно медленный, как-то призывал отказаться от его использования? Та где ж это было такое? :)

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


Название: Re: string и startsWith
Отправлено: Syveren от Май 29, 2013, 19:57
Оптимизировать надо в меру! От излиших оптимизаций код пухнет, его сложнее поддерживать... Особенно,если где-то там скрылась ошибка, приходится копаться, выясняя, чтоже на самом деле имел вииду автор  :'(


Название: Re: string и startsWith
Отправлено: _OLEGator_ от Май 29, 2013, 20:08
.. и проще купить комп помощнее
Впервые я услышал это от clipper'овских девочек в конце 80-х, и с той поры все то же. Жизнь показала что если ресурсы бездарно разбазариваются - мощность компа не спасает.

Очередное передергивание и вырывание слов из контекста. Это фраза относилась к фанатичной и бесполезной оптимизации. Потратив сегодня месяц на то, чтобы программа считала на 5 секунд быстрее, завтра ваш продукт начнет устаревать, а после завтра не будет нужен никому. Сейчас ценнее время и скорость разработки, простота поддержки и читаемость кода.
Вы пытаетесь усидеть на двух стульях, одновременно клеймя готовые решения за то, что они якобы ведут к отуплению и зависимости, но в тоже время открещиваетесь от велосипедов. Уж определитесь на какой вы стороне.


Название: Re: string и startsWith
Отправлено: Old от Май 29, 2013, 20:28
Очередное передергивание и вырывание слов из контекста. Это фраза относилась к фанатичной и бесполезной оптимизации.
Да в данном случае никто не думает ни про какую оптимизацию, это попытка "высосать из пальца" хоть какие то основания для целесообразности своего велика. Если вернуться к еще одной эпохальной теме про итераторы, то там Igors убеждал, что такая оптимизация совершенно не нужна. :)
Это для него абсолютно нормально.


Название: Re: string и startsWith
Отправлено: Spark от Май 29, 2013, 20:28
Что бы как нибудь разрядить обстановку или подлить масла в огонь (я уж и не знаю).
Посоветуйте как в строковой переменной удалить справа все символы начиная с первого попавшегося пробела?


Название: Re: string и startsWith
Отправлено: thechicho от Май 29, 2013, 21:00
Spark, вы уже решили на чьей вы стороне? ;D
если на стороне зла, то можете так :)
Код:
str.replace(QRegExp("\\s.+$"), "");


Название: Re: string и startsWith
Отправлено: kambala от Май 29, 2013, 22:00
\s — это любой пустой символ, а не только пробел

решение без регулярок тоже простое:
Код
C++ (Qt)
int spacePos = s.indexOf(" ");
if (spacePos != -1)
{
   s = s.left(spacePos);
   // или
   s.replace(spacePos, s.length() - spacePos, QString());
}


Название: Re: string и startsWith
Отправлено: Spark от Май 30, 2013, 03:23
Spark, вы уже решили на чьей вы стороне? ;D
если на стороне зла, то можете так :)
Код:
str.replace(QRegExp("\\s.+$"), "");
Спасибо. Регулярки для меня это новое в коде. Их можно использовать так же как и  в текстовых редакторах или свой особый язык?

Философия по поводу добра и зла. Если провести черту там где она проведена в споре, то я на стороне добра и зла. Просто не ясно зачем спор? Ведь ясно, что профи должен хорошо ориентироваться в чужих рецептах и уметь импровизировать.

У меня не может быть абсолютного мнения. Я слишком мало знаю в этой области. Но я привык двигаться от общего к частному. Вроде еще Микелажело, когда его спросили как вы создаете свои шедевры? Ответил - "Очень просто, беру камень и отсекаю все ненужное".
Короче, мне удобно пользоваться готовым решением, не особо вдаваясь в подробности как это устроено. Когда усвою картину в целом, надо переходить на частности. А сейчас глядя на листинг чужой программы, там вижу сплошные классы и функции в которых плохо ориентируюсь. Если еще упростить схему то я вижу много переменных в лице (классов и функций) объединенных логикой. Так вот в логике я более менее ориентируюсь, потому кое, что и получается двигать. А вот с переменными беда. Необходимо время, что бы легко начинать находить где голова, а где хвост :).
Надеюсь ясно пояснил.

P.S. Если же переходить на личности то мне импонирует, что у Igors есть такое качество как упертость (поперечность). Отстаивать свое мнение - вещь сложная. Правда тема для споров вряд ли выбрана удачно. Здесь не может быть правых.


Название: Re: string и startsWith
Отправлено: thechicho от Май 30, 2013, 08:42
//\s — это любой пустой символ, а не только пробел
какая разница. код выполнит свою задачу. если в строке будет "любой пустой символ", а его там не будет, то регулярка меняется так
Код:
str.replace(QRegExp(" .+$"), "");
учитывая, что вы тоже явно ищите пробел
Код:
int spacePos = s.indexOf(" ");

но если вам не нравятся регулярки или вы просто не умеете их готовить, то
Код:
s = s.left(s.indexOf(" "));


Название: Re: string и startsWith
Отправлено: Igors от Май 30, 2013, 08:45
Очередное передергивание и вырывание слов из контекста. Это фраза относилась к фанатичной и бесполезной оптимизации.
Ни к какой фанатичной оптимизации я не призывл. Да, QString довольно жирный/затратный класс, и да, переливание из одного строчника в другой и обратно не есть грамотно. Последнее вообще применимо к любым строковым типам. Что не так, что не нравится?

Да в данном случае никто не думает ни про какую оптимизацию, это попытка "высосать из пальца" хоть какие то основания для целесообразности своего велика.
Звучит как "ах ты, гад, велосипедишь!" :) Откуда такая злобв к велику? Ну не увидел этой вещички в бусте, ну сделал свою - почему это преступление? Почему я был обязан непременно найти и воспользоваться, почему Вы считаете это "делом чести", "показателем класса"? Это же чущь собачья  :)

В своем велике по меньшей мере вреда никакого. Беда совсем в другом - если человек пользует инструмент не умея сделать свой велик. Напр полезно сначала сделать свой "массив переменной длины", а уж потом юзать std::vector. Тогда будет "в жилу". Но подавляющее большинство считает себя умнее - и сразу начинает с вектора. В результате очень часто выбор этого контейнера неудачен. Использование готового хорошо при наличии своего опыта, иначе результат обратный.


Название: Re: string и startsWith
Отправлено: thechicho от Май 30, 2013, 08:49
Spark, ну Igors вам популярно намекнул, что надо начинать с частностей, а потом переходить к целому, выражаясь вашим языком.

//Если провести черту там где она проведена в споре, то я на стороне добра и зла
привет Швейцария

//есть такое качество как упертость (поперечность)
есть и упоротость ;D


Название: Re: string и startsWith
Отправлено: thechicho от Май 30, 2013, 08:58
А разве я говорил что QString - "плохой" класс, позорно медленный
Да, QString довольно жирный/затратный класс

В своем велике по меньшей мере вреда никакого. Беда совсем в другом - если человек пользует инструмент не умея сделать свой велик
Звучит как "ах ты, гад, не велосипедишь!"  Откуда такая злобв к готовым инструментам?

//В результате очень часто выбор этого контейнера неудачен. Использование готового хорошо при наличии своего опыта, иначе результат обратный.
код отработает на 20 микросекунд медленнее?)


Название: Re: string и startsWith
Отправлено: xokc от Май 30, 2013, 10:55
код отработает на 20 микросекунд медленнее?)
Какое пренебрежение к микросекундам. А если именно этих микросекунд и недостаточно?
Я к тому, что выбор реализации надо бы привязывать не к любви (или не любви) к велосипедам, а к требованиям ТЗ.


Название: Re: string и startsWith
Отправлено: thechicho от Май 30, 2013, 11:19
//этих микросекунд и недостаточно
для чего?:)

нет требований и тз. есть задача, которую надо решить.
в контексте задачи ТС видно, что не имеет значения отработает код 1 микросекунду или 20.
вообще не понятно, почему он решил работать с qt, учитывая что в коде std::string.
но раз он здесь, то исходя из контекста форума, было предложено решение с использованием qt, котороше пришлось не по душе Igors, о чем он популярно намекнул
Ну Вы же сами понимаете - это халтура. Давайте перельем строку из одного представления в другое, где есть удобные утилиты, а потом обратно. Да, делов неск секунд, но ведь платим оптимальностью. Вот кто-то ускорит Ваш код раз так в 20 и скажет типа "там какой-то лошара писал, с пых-пых наверно". И, поверьте, будет неприятно.
хотя перед этим он написал совершенно справедливую вещь, на которой бы все и закончилось, если бы не последовало дальнейших его комментариев
Вы можете использовать советы выше или написать свои утилиты - прекрасная возможность потренироваться в языке. Если опыта пока мало, то последний вариант заметно лучше


Название: Re: string и startsWith
Отправлено: Old от Май 30, 2013, 11:42
Откуда такая злобв к велику? Ну не увидел этой вещички в бусте, ну сделал свою - почему это преступление? Почему я был обязан непременно найти и воспользоваться, почему Вы считаете это "делом чести", "показателем класса"? Это же чущь собачья  :)
Да никому вы ничем не обязаны.
Я уже несколько раз только в этой теме писал свои мысли по поводу велосипедов, если вы не в состоянии их прочесть или понять, я ничем не смогу вам помочь.
Что касается конкретно этого велосипеда, то вот ключевой момент:
Ну не увидел этой вещички в бусте
Вы просто не знали, что уже есть готовое. Можно было просто сказать: "Я не знал". В этом нет ничего дурного, н овы начали придумывать какие-то нелепые причины. именно это всех и забавляет.

Но подавляющее большинство считает себя умнее - и сразу начинает с вектора.
Вот-вот. Загляните к себе в исходники и ужаснетесь. :)


Название: Re: string и startsWith
Отправлено: Spark от Май 30, 2013, 11:44
Spark, ну Igors вам популярно намекнул, что надо начинать с частностей, а потом переходить к целому, выражаясь вашим
Конечно же я это понял. Но дело не в этом у меня своя голова все таки есть :) и есть практический опыт в других областях. И практика показывает, что такой подход часто ведет к затягиванию процесс, тем более процесса обучения. Если перфекционизм в крови надо уметь искусственно освобождать себя от этого качества и помнить, что далеко не всегда в космос ракеты запускаем.

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




Название: Re: string и startsWith
Отправлено: Spark от Май 30, 2013, 11:57
нет требований и тз. есть задача, которую надо решить.
в контексте задачи ТС видно, что не имеет значения отработает код 1 микросекунду или 20.
вообще не понятно, почему он решил работать с qt, учитывая что в коде std::string.
Вроде как пояснял. Объект трасплантации межплатформенный и делался с использованием Qt. Я правлю нужный мне модуль. Поэтому частные задачи вытекают не из моих соображений, а то, что диктуют условия. Изменить весь код я не смогу как бы я не старался. Программа слишком сложна для меня, с моим скромным опытом. Мне бы научиться в интерфейс вносить нужные мне изменения и доделать свой модуль (пожалуй он уникален в своем роде).

На счет микросекун. В принципе в конечном итоге возможно они будут важны, но мне не до этого. Оптимизировать можно будет потом. Важно довести саму идею до ума. И пока я не ощущаю задержку вывода информации :).
Но как нибудь я выдам на суд программный продукт :).


Название: Re: string и startsWith
Отправлено: xokc от Май 30, 2013, 12:13
//этих микросекунд и недостаточно
для чего?:)
А я тоже этого не знаю. Может для чего-то и недостаточно. Вы же тоже не можете этого гарантировать? Мало того, Вы даже не можете оценить степень точности своего прогноза относительно количества микросекунд. Но уверенно заявляете, что Вам на эти микросекунды наплевать.

в контексте задачи ТС видно, что не имеет значения отработает код 1 микросекунду или 20.
1. Я где-то говорил про то, что это нужно ТС?
2. Мне лично - не видно. Я не знаю зачем ТС смешивать строки разных типов. Может он управляет сложными технологическими процессами с критическим временем доступа или, например, этот участок кода выполняется миллион раз.
3. Задача ТС вполне успешно решена много страниц назад, а весь дальнейший флейм давно уже никаким боком к проблемам ТС не относится.


Название: Re: string и startsWith
Отправлено: Igors от Май 30, 2013, 12:32
Вы просто не знали, что уже есть готовое. Можно было просто сказать: "Я не знал". В этом нет ничего дурного, н овы начали придумывать какие-то нелепые причины
Конечно не знал, и никаких причин не выдумывал. Просто от того что я написал это сам - мне аедь хуже не стало  :)

И вот здесь горький опыт говорит, что пользователю на это ровным счетом наплевать. Код его не волнует (с точки зрения как это устроено), для него важна сама идея и реализация.
Наверное Вы хотели сказать "результат" (вместо "реализация"). Но позволив себе схалтурить раз - потом остановиться уже очень трудно, практически невозможно. Ну вот обсуждение показало что есть прекрасное решение на бусте. Но над Вами уже "довлеет" написанный и работающий код, что-то менять - страшно трудно. И причин для оправдания найдется сколько угодно (излишний перфекционизм, фанатичная оптимизация, юзеру все равно - все мы прекрасно умеем прикрыть свою лень, я тоже :)). А дальше все катится по принципу "и так сойдет" - ведь оно уже успешно проходило. Идеального кода наверное не существует, но всегда идти "по пути наименьшего сопротивления" все же не стоит (тем более если тонной написанного кода Вы еще не обзавелись).


Название: Re: string и startsWith
Отправлено: Spark от Май 30, 2013, 12:33
Мне лично - не видно. Я не знаю зачем ТС смешивать строки разных типов. Может он управляет сложными технологическими процессами с критическим временем доступа или, например, этот участок кода выполняется миллион раз.
Второе. Не миллион конечно, но с 1000 вполне может быть.


Название: Re: string и startsWith
Отправлено: Old от Май 30, 2013, 12:39
Конечно не знал, и никаких причин не выдумывал. Просто от того что я написал это сам - мне аедь хуже не стало  :)
Смотрим развитие событий... ТС нужны регулярные выражения. Вы готовы исправить ваше решение для этого? Минут же за 10-15. Нет?
Ваше решение продержалось недолго, и полетело в мусор. А мы спешим или к boost или Qt. Все мы поехали дальше, машем вам рукой.... :)


Название: Re: string и startsWith
Отправлено: Igors от Май 30, 2013, 12:43
Второе. Не миллион конечно, но с 1000 вполне может быть.
Да дело даже не в скорости (или не только в ней). В рамках модуля (или по крайней мере файла) строковый тип должен быть однообразным. Перекачивая туда-сюда Вы как бы заявляете "ну я совсем уже бедный и больной, не бейте" - такой подход, мягко говоря, "несолидный"  :)


Название: Re: string и startsWith
Отправлено: thechicho от Май 30, 2013, 13:13
//В рамках модуля (или по крайней мере файла) строковый тип должен быть однообразным.
ТС адаптирует код под свои нужды. следуя вашей логике, ему либо нужно переписать чужой код средствами qt, либо писать стандартными средствами языка. второй вариант для ТС оказался затруднительным, а решение нужно сейчас.

Оптимизировать можно будет потом. Важно довести саму идею до ума.


Название: Re: string и startsWith
Отправлено: Spark от Май 30, 2013, 13:16
Да дело даже не в скорости (или не только в ней). В рамках модуля (или по крайней мере файла) строковый тип должен быть однообразным. Перекачивая туда-сюда Вы как бы заявляете "ну я совсем уже бедный и больной, не бейте" - такой подход, мягко говоря, "несолидный"  :)
Однако, перекачивая код туда и обратно выглядит компактно и аккуратно :). Создавая свои модули, вряд ли будет выглядеть так компактно, если вообще это будет сделать мне под силу. Я уж не говорю сколько времени мне на это понадобится.
В общем в данной ситуации не целесообразно мне создавать свой код.
Также такой подход не целесообразен с точки зрения обучения. Количество информации, способную усвоить человеческий мозг, в единицу времени слишком мало.
Ну а уж какие правила для себя выберет ученик после обучения зависит от его способностей. Важно грамотно использовать энтузиазм на начальной стадии обучения. И что бы смог дойти до точки невозврата. Большинство же не способны к самообучению и зациклившись на частных вопросах, не доходят до этой точки, а вот до ручки вполне...


Название: Re: string и startsWith
Отправлено: m_ax от Май 30, 2013, 17:22
Да дело даже не в скорости (или не только в ней). В рамках модуля (или по крайней мере файла) строковый тип должен быть однообразным. Перекачивая туда-сюда Вы как бы заявляете "ну я совсем уже бедный и больной, не бейте" - такой подход, мягко говоря, "несолидный"  :)
Однако, перекачивая код туда и обратно выглядит компактно и аккуратно :). Создавая свои модули, вряд ли будет выглядеть так компактно, если вообще это будет сделать мне под силу. Я уж не говорю сколько времени мне на это понадобится.
В общем в данной ситуации не целесообразно мне создавать свой код.
Также такой подход не целесообразен с точки зрения обучения. Количество информации, способную усвоить человеческий мозг, в единицу времени слишком мало.
Ну а уж какие правила для себя выберет ученик после обучения зависит от его способностей. Важно грамотно использовать энтузиазм на начальной стадии обучения. И что бы смог дойти до точки невозврата. Большинство же не способны к самообучению и зациклившись на частных вопросах, не доходят до этой точки, а вот до ручки вполне...

Если честно, то по характеру ваших вопросов, создаётся впечатление, что вы как раз и копаетесь в частностях..   Ведь, фактически, они (вопросы) не имеют такого прямого отношения к программированию и к С++, в частности. Может проблема в умении самостоятельно находить информацию?) (Например Qt - очень хорошо документирована, имеются много различных примеров, по C++  литературы тоже вполне достаточно, а имея интернет, найти что-либо быстро - это сейчас вообще не проблема)
Может следует начать с этого?


Название: Re: string и startsWith
Отправлено: Spark от Май 30, 2013, 18:00
Если честно, то по характеру ваших вопросов, создаётся впечатление, что вы как раз и копаетесь в частностях..   Ведь, фактически, они (вопросы) не имеют такого прямого отношения к программированию и к С++, в частности. Может проблема в умении самостоятельно находить информацию?) (Например Qt - очень хорошо документирована, имеются много различных примеров, по C++  литературы тоже вполне достаточно, а имея интернет, найти что-либо быстро - это сейчас вообще не проблема)
Может следует начать с этого?
Я не плохо ориентируюсь в потоке информации. Но вы упускаете из виду тот факт, что я не раз пытался довести до сведения - я учу C++ чуть больше недели. Когда вы начинали, легко ориентировались в терминах и в чужом исходнике? И с этой точки зрения не так уж много информации окажется на поверку. Большая часть информации становится бесполезной на данном этапе. Мне нужен наставник (в данном случае коллективный) и я благодарен за любую помощь. Можно сделать вывод - я тороплюсь и забегаю вперед. Нет! Вопросы по мере практики ускоряют процесс самообучения в разы. Тут другой вопрос, лишь бы нашлись добрые люди готовые помочь и ответить на глупые на первый взгляд вопросы. Но я уже, кажется говорил: не бывает глупых вопросов. Есть глупые ответы.
Второе, я вовсе не копаюсь в частностях. Мне было достаточно несколько топиков с этой ветки, что бы понять и сделать все как надо. А уж извините во флуд ветку превратили как раз специалисты. Но я лично не в обиде. Может меня уму разуму научат :). А на вопросы я привык отвечать, а отвечать коротко, к сожалению, у меня не всегда выходит :).

Во многом виной моя недоговоренность. Проект, который я делаю, отнюдь не для новичка с недельным стажем. Но вот сама идея для бывалого пройдохи :). Что поделать Qt подвернулся :). Понравилось :).


Название: Re: string и startsWith
Отправлено: m_ax от Май 30, 2013, 18:39
Я не плохо ориентируюсь в потоке информации. Но вы упускаете из виду тот факт, что я не раз пытался довести до сведения - я учу C++ чуть больше недели.
Я понимаю, понимаю.. Только причём здесь c++?

Когда вы начинали, легко ориентировались в терминах и в чужом исходнике?
Ну это всё от исходников зависит и от того, кто и как их писал) Вот когда только начинал изучать ++, то примеры в книгах, я понимал)

Но я уже, кажется говорил: не бывает глупых вопросов. Есть глупые ответы.
О, это весьма смелое утверждение..

А я бы так сказал:
Есть люди, которые могут поставить гениальные вопросы. И также гениально на них ответить (сами)
Есть люди, которые могут поставить блестящие вопросы.. но.. им не всегда удаётся найти ответов
И, наконец, есть все остальные)
  
Но, это уже другая история)

  


Название: Re: string и startsWith
Отправлено: Spark от Май 30, 2013, 18:58
Я понимаю, понимаю.. Только причём здесь c++?
Ну вот из разряда глупых вопросов. А что я собственно изучаю? Попунктно разложите, что бы закрыть этот глупый вопрос :).

Цитировать
О, это весьма смелое утверждение..

Это верное утверждение. Правила просты:
- Ученик спрашивает. Хватило смелости (далеко не каждому это под силу). Это плюс в любом случае. Он спросил всего лишь потому, что не знает ответ и не постеснялся выглядеть дураком. Иначе комплекс неполноценности реально сделает его идиотом.
- Высокомерие не красит учителя. Тут либо гасим амбиции и помогаем, либо не отвечаем.


Название: Re: string и startsWith
Отправлено: m_ax от Май 30, 2013, 19:49
Я понимаю, понимаю.. Только причём здесь c++?
Ну вот из разряда глупых вопросов. А что я собственно изучаю? Попунктно разложите, что бы закрыть этот глупый вопрос :).
Подождите.. Вы в предыдущем посте утверждали, что не бывает глупых вопросов) А теперь вроде как говорите об обратном?)
Но мой вопрос был больше риторическим) Просто все ответы на ваши вопросы содержаться в документации (Qt/С++), а чтобы прочесть её, не нужно обязательно знать Qt/C++

Это верное утверждение. Правила просты:
- Ученик спрашивает. Хватило смелости (далеко не каждому это под силу). Это плюс в любом случае. Он спросил всего лишь потому, что не знает ответ и не постеснялся выглядеть дураком. Иначе комплекс неполноценности реально сделает его идиотом.
- Высокомерие не красит учителя. Тут либо гасим амбиции и помогаем, либо не отвечаем.

Так ведь я и не спорю с тем, что задавать вопросы нужно.. и, что это плюс..
Дело в самом качестве вопросов)
Здесь уже приводили пример с удочкой и рыбой.. Напомню ещё раз, специально для вас:
Задавая свои вопросы, вы выпрашиваете рыбу (готовую)
Хороший же учитель, учит как пользоваться удочкой, чтоб вы самостоятельно могли её выловить..
Понимаете?)
 

 


Название: Re: string и startsWith
Отправлено: Spark от Май 30, 2013, 19:51
Подождите.. Вы в предыдущем посте утверждали, что не бывает глупых вопросов) А теперь вроде как говорите об обратном?)
Но ведь шутливую иронию тож надо понимать :). Ну не могу же в самом деле себя считать дураком :).

Вы считаете, что после недели (еще раз обращаю на это внимание) обучения новичок с легкость ориентируется в справочнике?
Ах как мы быстро забываем, что могли после недели обучения и нужны ли нам были подсказки. Полагаю, что обычно Hello World! выводили.


Название: Re: string и startsWith
Отправлено: Spark от Май 30, 2013, 20:02
Так ведь я и не спорю с тем, что задавать вопросы нужно.. и, что это плюс..
Дело в самом качестве вопросов)
Здесь уже приводили пример с удочкой и рыбой.. Напомню ещё раз, специально для вас:
Задавая свои вопросы, вы выпрашиваете рыбу (готовую)
 
Я ведь не прошу вас сделать мне программу. Я спрашиваю как пользоваться библиотеками. Это простой вопрос? Показали. Я запомнил. Поверьте не получится так, что в одно ухо влетело, а в другое вылетело. А вот если я переверну кучу ненужной информации, то как раз так и получается. Количество тут может и перейдет в качество, но не эффективно. Лучше перевернуть гору нужной информации. А для этого надо научиться задавать вопросы. В данном случае я задал несколько вопросов и мне многое стало ясно. Теперь я могу самостоятельно многое сделать сам и переворачивать именно то, что мне надо :).
У меня довольно реальная задача, зачем до нее доходить? Я могу прямо с нее и начать, если понимаете о чем я сейчас сказал. Или скажу проще смотрю на код и спрашиваю неясные моменты. Это как изучать язык - реальный контекст помогает освоить язык в разы быстрее, нежели учить слова, не совсем осознавая, а вообще они понадобятся? Без практики слова все равно вылетают. Конечно понадобятся, но вот только не сейчас. А к тому времени когда они все таки понадобятся я уже грамматику основательно осознаю. По моему ясное и удачное сравнение.


Название: Re: string и startsWith
Отправлено: mutineer от Май 31, 2013, 09:05
Spark Вместо всей этой воды, которую ты налил в этой теме, вполне мог бы уже кучу мануалов прочитать и осознать... Или поэкспериментировать с каким-нить кодом... Короче сделать что-то полезное для своего "обучения"


Название: Re: string и startsWith
Отправлено: Spark от Май 31, 2013, 09:35
Spark Вместо всей этой воды, которую ты налил в этой теме, вполне мог бы уже кучу мануалов прочитать и осознать... Или поэкспериментировать с каким-нить кодом... Короче сделать что-то полезное для своего "обучения"
Вы чего то попутали.


Название: Re: string и startsWith
Отправлено: mutineer от Май 31, 2013, 10:52
Ничего я не попутал. Ты задал один вопрос и других от тебя не слышно. Зато слышно много воды про то, как тяжело учиться и как ты только начал и какие подходы надо использовать к обучению. Отсюда напрашивается два вывода - либо тебе все остальное понятно, либо ты льешь тут воду вместо реальных попыток чему-то научиться. Ну еще остается вариант что тебе отбили охоту что-то тут спрашивать, но мне кажется ты бы тогда вообще ничего сюда не писал:)


Название: Re: string и startsWith
Отправлено: Spark от Май 31, 2013, 11:18
Ничего я не попутал. Ты задал один вопрос и других от тебя не слышно. Зато слышно много воды про то, как тяжело учиться и как ты только начал и какие подходы надо использовать к обучению. Отсюда напрашивается два вывода - либо тебе все остальное понятно, либо ты льешь тут воду вместо реальных попыток чему-то научиться. Ну еще остается вариант что тебе отбили охоту что-то тут спрашивать, но мне кажется ты бы тогда вообще ничего сюда не писал:)
Таких слепых грубиянов как Ты хватает на любом форуме. Жаль, что этот не исключение.


Название: Re: string и startsWith
Отправлено: mutineer от Май 31, 2013, 11:29
О, как же я мог быть так слеп, еще же был вопрос про replace. О горе мне, это действительно очень интенсивное обучение


Название: Re: string и startsWith
Отправлено: Spark от Май 31, 2013, 11:37
О, как же я мог быть так слеп, еще же был вопрос про replace. О горе мне, это действительно очень интенсивное обучение
Да нет. Ваша слепота куда  более далеко зашла.


Название: Re: string и startsWith
Отправлено: mutineer от Май 31, 2013, 11:39
О, как же я мог быть так слеп, еще же был вопрос про replace. О горе мне, это действительно очень интенсивное обучение
Да нет. Ваша слепота куда  более далеко зашла.

Можешь снова переходить на ты, я тут один


Название: Re: string и startsWith
Отправлено: kambala от Май 31, 2013, 11:41
2mutineer: попусту тратишь время


Название: Re: string и startsWith
Отправлено: mutineer от Май 31, 2013, 11:42
2mutineer: попусту тратишь время

Да тут все равно уже флуд на флуде и флудом погоняет
Но вообще да, ты прав


Название: Re: string и startsWith
Отправлено: Igors от Май 31, 2013, 13:24
Однако, перекачивая код туда и обратно выглядит компактно и аккуратно :). Создавая свои модули, вряд ли будет выглядеть так компактно, если вообще это будет сделать мне под силу. Я уж не говорю сколько времени мне на это понадобится.
В общем в данной ситуации не целесообразно мне создавать свой код.
Поаерьте, Вы не первый (и даже не сотый) считающий себя "ловким колобком" (я от дедушки ушел, я от бабушки ушел)  :)  Никуда Вы не денетесь, свой код писать придется под напором решаемых задач. Всячески оттягивая этот момент Вы попусту теряете время на выкручивание  :)


Название: Re: string и startsWith
Отправлено: Spark от Май 31, 2013, 13:41
Поаерьте, Вы не первый (и даже не сотый) считающий себя "ловким колобком" (я от дедушки ушел, я от бабушки ушел)  :)  Никуда Вы не денетесь, свой код писать придется под напором решаемых задач. Всячески оттягивая этот момент Вы попусту теряете время на выкручивание  :)
В общем то я без задних мыслей и умнее других себя не считаю, хотя комплексом неполноценности то же не страдаю.
Был бы счастлив если бы умел составлять свой код на сегодня. Это многое бы поменяло. Но вот это не возможно.
У меня вполне реальная задача, требующая скорейшего осуществления. В данной ситуации работающий код для меня важнее обучения.
Если удастся осилить эту науку, вот тогда и буду думать, исходя из задачи, о том, что оптимальнее - свое или готовое.