Char*. как определить размер строки.

mibin

Well-Known Member
29.01.2009
48
0
29
Видное
#1
Добрый день!
Вопрос вроде бы на первый взгляд простой, но ответ на него найти не получается.
Как определить разме строки?

Результат ниже приведенного кода:
Код:
[MAIN] Size of string = 4
[PROC] Size of string = 4
C++:
#include <stdio.h>
#include <iostream.h>
 
void proc(char* ch) {
	cout << "[PROC] Size of string = " << sizeof(ch) << endl;
}
 
void main() {
	char* ch = "Hello my dear world!";
 
	cout << "[MAIN] Size of string = " << sizeof(ch) << endl;
	proc(ch);
}
 
R

rrrFer

Гость
#2
Подключи модуль обработки Си-строк (char*) и вызови функцию strlen:
C++:
#include <string.h>
// ...
char *str;
// ...
cout << strlen(str);
size, который вы пытались вызывать - это не функция, а макрос, который возвращает количество байт, занимаемое типом данных. Т.е. в данном случае видно, что элементы типа данных char* занимают на вашем компьютере 4 байта.

Тип данных char* - это указатель, который является целым неотрицательным числом. Именно поэтому там 4 байта.
C++:
size(char)
вернет единицу, т.к. один символ всегда занимает один байт