Mam problem ze znalezieniem długości tablicy wskaźnika. Powiedzmy, że mam:C++ Jak uzyskać długość tablicy wskaźnika?
char array[40] = "hello"; // size 40
int length = sizeof array/sizeof array[0]; // no problem returns 40
// Jak uzyskać długość tablicy z tylko wskaźnikiem do pierwszego elementu w tej tablicy?
char* pchar = array;
// jeśli
std::strlen(pchar); // this returns the length of 5... i want length 40
// jeśli
int count = 0;
while(true)
{
if(*(pchar + count) == '\0') // returns 5...
break;
count++;
}
Jak mogę zmusić go do powrotu długość 40 tylko ze wskaźnikiem do pierwszego elementu w tablicy?
Znalazłem, że mogę to zrobić.
int count = 0;
while(true)
{
if(*(pchar + count) == '\0' && *(pchar + count + 1) != '\0')
break;
count++;
}
To zwraca 39, to jest dobre, ale mam wrażenie, że w niektórych sytuacjach może to być błędne.
nie można uzyskać długość tablicy ze wskaźnikiem. – juanchopanza
Są hacki, ale nie ma wbudowanego sposobu na zrobienie tego. – ApproachingDarknessFish