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

Тема в разделе "Общие вопросы по С и С++", создана пользователем mibin, 29 мар 2015.

  1. mibin

    mibin Well-Known Member

    Регистрация:
    29 янв 2009
    Сообщения:
    48
    Симпатии:
    0
    Добрый день!
    Вопрос вроде бы на первый взгляд простой, но ответ на него найти не получается.
    Как определить разме строки?

    Результат ниже приведенного кода:
    Код (Text):
    [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);
    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

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

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

Поделиться этой страницей