Я читаю книгу на C++ (тур по C++, Бьярне Страуструп, второе издание) и есть пример кода:Объяснение некоторого кода
int count_x(char* p,char x)
{
if (p==nullptr) return 0;
int count = 0;
for(;*p!=0;++p)
if (*p==x)
++count;
return count;
}
В этой книге, это объясняется что указатель p функции должен указывать на массив char (т.е. на строку?).
Так что я попробовал этот код в основном:
string a = "Pouet";
string* p = &a;
int count = count_x(p, a);
Но count_x нужен обугленная не строка, так он не компилируется. Так что я пробовал:
char a[5] {'P','o','u','e','t'};
char* p = &a;
int count = count_x(p, a);
Но, конечно, это не будет работать, так как в одиночку указатель не может указывать на полный массив. Так, наконец, я попытался сделать массив указателя:
char a[5] {'P','o','u','e','t'};
char* p[5] {&a[0],&a[1],&a[2],&a[3],&a[4]};
int count = count_x(p, a);
Но функция не будет принимать массивы, так как он был не только char
.
Итак, я не имею ни малейшего представления о том, как использовать функцию count_x (который, как предполагается, подсчитывают количество x
в p
.
Не могли бы вы дать мне пример рабочего кода, который использует эту функцию?
.
Нет, массив символов не совпадает с строковым объектом, и я хотел бы начать с некоторых основ C++ перед книгами Страустрапа. –
«Определение count_x() предполагает, что char * является строкой в стиле C» (из «Обзор C++», Stroustrup 2013). – molbdnilo