У меня есть следующее заявлениеВ C++ Как сравнить размер массива символов с строкой?
char c[] = "Hello";
string c2 = "Hello";
Я хочу, чтобы сравнить), сколько байтов памяти как необходимость и б) длины символов. Я знаю, что массивы символов добавляют нулевой ограничитель в конце строки, где в качестве типов данных строк нет.
Использование
cout << "The sizeof of c: " << sizeof(c);
cout << "The sizeof of c2: " << sizeof(c2);
возвращает 6 и 4, и я не уверен, почему 4, а не 5? также, как это функция длины сравнить здесь ...
Когда я использую следующий код
cout << "The sizeof of c: " << sizeof(c);
cout <<"The sizeof of c2: " << c2.length();
я получаю 6 и 5 ... но это сравнение длин таким же образом? Спасибо.
'sizeof (c2) == 4' ?? В самом деле? Каков реальный тип 'c2'? Это явно не 'std :: string' –
@ DavidRodríguez-dribeas: Почему бы и нет? Есть ли что-то незаконное в реализации строк, которое содержит одиночный указатель на блок метаданных ala pimpl? –
@BenVoigt: Я предполагаю, что технически это было бы возможно, не видел никакой реализации 'std :: string', делающей это когда-либо. –