Re[2]: правильно пользоваться указателями - не юзать ++ ?
От: byleas  
Дата: 12.11.09 19:50
Оценка: 10 (1)
Здравствуйте, armani, Вы писали:

A>Как вариант — переложить заботу об указателях на стандартую библиотеку — в большинстве случаев это оправдано, к тому же упрощает код и таким образом минимизирует к-во багов


A>
std::string buf("hello world!");
A>    int spaces = std::count_if(buf.begin(), buf.end(), isspace);
A>

Дабы не копировать почём зря строку,
const char str[] = "hello";
int spaces = std::count_if(str, str+sizeof(str), isspace); // для char sizeof корректен, для любых символов надо _countof

Или, как в исходном условии, вместо sizeof пишем strlen.
Re[3]: правильно пользоваться указателями - не юзать ++ ?
От: Caracrist https://1pwd.org/
Дата: 15.11.09 05:49
Оценка:
Здравствуйте, byleas, Вы писали:

B>Здравствуйте, armani, Вы писали:


B>Дабы не копировать почём зря строку,

B>
const char str[] = "hello";
B>int spaces = std::count_if(str, str+sizeof(str), isspace); // для char sizeof корректен, для любых символов надо _countof

B>Или, как в исходном условии, вместо sizeof пишем strlen.

Только использование sizeof в таком варианте действительно полезно. Все остальные кто предлогал, так или иначе пользоваться strlen, просто незнают о чём говорят. Выполнение strlen это пустая трата времени для поиска нулевого символа, вместо того чтобы за ту же пробежку считать и пробелы.
~~~~~
~lol~~
~~~ Single Password Solution
Re[3]: правильно пользоваться указателями - не юзать ++ ?
От: Caracrist https://1pwd.org/
Дата: 15.11.09 05:59
Оценка:
Здравствуйте, makdak, Вы писали:

M>Здравствуйте, Caracrist, Вы писали:


C>>конечно, тут же делаются кучя лишних операций


C>>
C>>char * c = buf; 
C>>while (*c != '\0')
C>>{
C>>    if (*c == ' ')
C>>        count_space_symbols++;
C>>    c++;
C>>}
C>>


M>ну это понятно, а если строка не оканчивается 0? хотя Alexander G уже ответил.

Либо на ноль, либо дан размер.

И что там "Alexander G уже ответил"?
Вот это что ли:

char *past_end_buf = buf + strlen(buf);

~~~~~
~lol~~
~~~ Single Password Solution
Re[4]: правильно пользоваться указателями - не юзать ++ ?
От: makdak  
Дата: 15.11.09 13:08
Оценка:
Здравствуйте, Caracrist, Вы писали:

C>Здравствуйте, makdak, Вы писали:


M>>Здравствуйте, Caracrist, Вы писали:


C>>>конечно, тут же делаются кучя лишних операций


C>>>
C>>>char * c = buf; 
C>>>while (*c != '\0')
C>>>{
C>>>    if (*c == ' ')
C>>>        count_space_symbols++;
C>>>    c++;
C>>>}
C>>>


M>>ну это понятно, а если строка не оканчивается 0? хотя Alexander G уже ответил.

C>Либо на ноль, либо дан размер.

C>И что там "Alexander G уже ответил"?

C>Вот это что ли:
C>

C>char *past_end_buf = buf + strlen(buf);

C>
Alexander G ответил на сабж.
сколько ты еще будешь головой об стену биться?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.