Нужен итератор по знакам/символам строки заканчивающейся нулем (без предварительного измерения длины строки), который будет использоваться примерно так:
Или я не понял или ты только что описал банальный указатель const char* и его встроенный operator++.
Только зачем этот весь огород? Чисто чтоб было как у пацанов в boost?
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, igna, Вы писали:
CS>Или я не понял или ты только что описал банальный указатель const char* и его встроенный operator++. CS>Только зачем этот весь огород? Чисто чтоб было как у пацанов в boost?
Здравствуйте, igna, Вы писали:
I>Нужен итератор по знакам/символам строки заканчивающейся нулем (без предварительного измерения длины строки), который будет использоваться примерно так:
Здравствуйте, c-smile, Вы писали:
CS>Или я не понял или ты только что описал банальный указатель const char* и его встроенный operator++. CS>Только зачем этот весь огород? Чисто чтоб было как у пацанов в boost?
Чтобы как в STL. И чтобы использовать алгоритмы оттуда.
Спасибо, я понял так, что нужно использовать алгоритмы Boost.Range взамен алгоритмов STL. Хорошо, только чего-то подобного cstring_range я в Boost.Range не нашел.
Здравствуйте, igna, Вы писали:
I>Здравствуйте, wander, Вы писали:
W>>здесь
I>Спасибо, я понял так, что нужно использовать алгоритмы Boost.Range взамен алгоритмов STL. Хорошо, только чего-то подобного cstring_range я в Boost.Range не нашел.
Алгоритмы можно и стандартные использовать. ИМХО, range только дополняет их. boost::iterator_range видел?
Нашелся еще вот такой исходник. Что-то подобное встречалось и с использованием range, с ходу не нашел примера.
Здравствуйте, wander, Вы писали:
W>Алгоритмы можно и стандартные использовать. ИМХО, range только дополняет их. boost::iterator_range видел?
W>Нашелся еще вот такой исходник. Что-то подобное встречалось и с использованием range, с ходу не нашел примера.
Прошу прощения, можно сначала один вопрос прежде чем я снова начну искать в Bopost.Range. Мне cstring_iterator или cstring_range все-равно придется самому писать?
Здравствуйте, igna, Вы писали:
I>Нужен итератор по знакам/символам строки заканчивающейся нулем (без предварительного измерения длины строки), который будет использоваться примерно так:
I>
Здравствуйте, igna, Вы писали:
I>Здравствуйте, wander, Вы писали:
W>>здесь
I>Спасибо, я понял так, что нужно использовать алгоритмы Boost.Range взамен алгоритмов STL
Необязательно, хоть и удобно.
Можно юзать вот так:
Здравствуйте, igna, Вы писали:
I>Нужен итератор по знакам/символам строки заканчивающейся нулем (без предварительного измерения длины строки), который будет использоваться примерно так:
вы фактически и написали что вам тербуется
я бы подкорректировал так
Здравствуйте, ioni, Вы писали:
I>я бы подкорректировал так
У тебя ошибка, в случае пустой строки выводится завершающий строку '\0'.
Не стану утверждать, что у меня ошибок нет; как раз для того, чтобы не выискивать их, и хотел воспользоваться готовым решением. А нафигачить горы непроверенного и неотлаженного кода вдоль и поперек по диагонали я тоже могу. Но не хочу.
Здравствуйте, igna, Вы писали:
I>Здравствуйте, ioni, Вы писали:
I>>я бы подкорректировал так
I>У тебя ошибка, в случае пустой строки выводится завершающий строку '\0'.
I>Не стану утверждать, что у меня ошибок нет; как раз для того, чтобы не выискивать их, и хотел воспользоваться готовым решением. А нафигачить горы непроверенного и неотлаженного кода вдоль и поперек по диагонали я тоже могу. Но не хочу.
Я проверял нет
int main()
{
const char* str = {"abcdefghijklmniop"};
// std::copy( char_string_iterator(str), char_string_iterator(), std::ostream_iterator<char>(std::cout, "\n") );
size_t len = 0;
char_string_iterator i = char_string_iterator(str), e =char_string_iterator();
for(; i != e; ++i)
{
char ch = *i;
++len;
}
std::cout << strlen(str) << " " << len;
return 0;
}
17 17
Здравствуйте, igna, Вы писали:
I>Здравствуйте, ioni, Вы писали:
I>>я бы подкорректировал так
I>У тебя ошибка, в случае пустой строки выводится завершающий строку '\0'.
I>Не стану утверждать, что у меня ошибок нет; как раз для того, чтобы не выискивать их, и хотел воспользоваться готовым решением. А нафигачить горы непроверенного и неотлаженного кода вдоль и поперек по диагонали я тоже могу. Но не хочу.
Здравствуйте, igna, Вы писали:
I>Здравствуйте, ioni, Вы писали:
I>>я бы подкорректировал так
I>У тебя ошибка, в случае пустой строки выводится завершающий строку '\0'.
I>Не стану утверждать, что у меня ошибок нет; как раз для того, чтобы не выискивать их, и хотел воспользоваться готовым решением. А нафигачить горы непроверенного и неотлаженного кода вдоль и поперек по диагонали я тоже могу. Но не хочу.
Хорошо, едем дальше. Проверка str_ != 0 в операторах разыменовывания и инкрементирования in release mode не нужна, поскольку сингулярный итератор разыменовывать и инкрементировать запрещено.