Получить длину неподписанного символа * - PullRequest
0 голосов
/ 16 апреля 2020

Привет, я пытаюсь получить длину беззнакового символа *, это указатель на массив, который означает, что я не могу использовать sizeof. Я не могу привести его к типу char *, затем выполнить strlen (), поскольку он содержит нулевые байты в середине строки. Какой еще способ сделать это?

stream.open("test.txt");
stream.write((char*)c, Length of the string); // How do i find Length of the string
stream.close(); 

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

tl; dr: Вы не можете.


Привет, я пытаюсь получить длину беззнакового символа *

Предположительно, вы имеете в виду длину массива, на который он указывает.

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

Это верно.

Я не могу привести его к типу char *, затем выполнить либо strlen (), поскольку он содержит нулевые байты в середине строки.

Хорошо, так что это не C -строка с нулевым символом в конце. Нулевое завершение - это способ вычислить длину C -строки, если вы не сохранили ее другими способами.

Какой еще способ сделать это?

Нет. Вам придется хранить его другими способами. Например, передайте его указателем.

0 голосов
/ 16 апреля 2020

это указатель на массив

Чтобы использовать точную терминологию: это указатель на неподписанный символ. Этот неподписанный символ может быть элементом массива.

Я не могу использовать sizeof. ... он содержит нулевые байты в середине строки. Какой еще способ это сделать?

Если вы знаете, что массив существует, решение простое: используйте sizeof в массиве вместо указателя.

...