2016-02-20 5 views
-1

Это код java.Как найти длину массива символов?

for (int j = 0; j < charArray[i].length; j++) { 

      System.out.print(charArray[i][j]); 

     } 

Очень простой вопрос, как создать свойство java length, но в C++?

+2

Возможный дубликат [Как найти длину массива?] (Http://stackoverflow.com/questions/4108313/how-do-i-find-the-length-of-array) –

+0

[Что такое эквивалент 'array.length()' (используется в Java) в C++?] (Https: // www .quora.com/What-is-the-equ-of-length-used-in-Java-in-C++), [Как использовать массивы в C++?] (http://stackoverflow.com/q/4810664/995714) –

+1

Рассмотрите возможность использования одного из классов контейнера C++, например 'std :: vector' или' std :: array'. –

ответ

0

Вы можете сделать вызов функции, передав указатель массива, и вы можете проверить, если указатель является недействительным по

if (charArray != 0) 

, то вы можете попробовать это

sizeof(charArray)/sizeof(charArray[0])

+0

Я не получаю 0 в charArray [0]. – jarwin

+1

, что означает размер всего массива, деленный на размер одного элемента –

+3

Это работает только в том случае, если 'charArray' на самом деле является массивом. Если вы передали его функции как параметр, то, что вы фактически передали, вероятно, является указателем, и его размер недоступен. –

0
template <typename T,unsigned S> 
inline unsigned arraysize(const T (&v)[S]) { return S; } 

компилятор попытается создать функцию, основанную на шаблоне, которая соответствует размеру массива. Я не беру на себя ответственность за ответ, см. Ссылку ниже, с более длинным объяснением.

http://www.cplusplus.com/forum/general/33669/

Это не работает для динамически выделяемого массива, но он дает ошибку компилятора. Что-нибудь работает для динамически распределенного массива?

0

Просто сделай это: for(int a=0; charArray[a] != '\0' ; a++); Это сохранит длину charArray в «в»

+0

Это работает только в том случае, если это строка с нулевым завершением и даст вам размер строки, а не массив. То есть, если строка была сохранена в массиве, который больше, чем он сам, он просто укажет размер до «\ 0». Кроме того, это приведет к ошибкам сегментации, если массив не является ничейной завершенной строкой. – Ramon

+0

Но не так ли, все строки принудительно завершаются нулевым символом. ??? –

+0

И что касается массива, нам нужна только длина строки. Поэтому я предполагаю, что он вернет длину строки до тех пор, пока не встретится нулевой символ. –

Смежные вопросы