Длина строки в VC...

Тема в разделе "LANGS.C", создана пользователем Quark, 26 авг 2007.

  1. Quark

    Quark New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    211
    Умеет ли VC подсчитывать длину статических строк? я имею ввиду макрос, а не функцию.

    Вообще например в InitUnicodeString стоит такая штука: sizeof(L"...");
    Но так не совсем удобно. хотелось бы что-то типа:

    PCHAR pBuffer1 = "...";
    ULONG BufferSize = sizeof(pBuffer1);

    в результате компилятор, как честный человек, выдаёт 4... Я, конечно знаю что указатель весит 4байта, но мне нужен размер строки... неужели чтобы описать строку и её длину необходимо прописывать её 2 раза?

    PCHAR pBuffer1 = "...";
    ULONG BufferSize = sizeof("...");
     
  2. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    ой что-то вы такое накрутили
    1) PCHAR это всегда указатель его размер зависит от платформы
    2) Обычные статические строки объявляются так:
    Код (Text):
    1. WCHAR str[256];
    2. CHAR str2[] = "some string value";
    sizeof возвращает размер любой статической переменной всегда в байтах, без учёта нуля для строк т.е. в первом случае получаем 512, во втором 13
    3) что значит это:
    Код (Text):
    1. PCHAR pBuffer1 = "...";
    ? в правилах С в кавычки заключаются строки, если вы хотите проинициализировать указатель аски кодами от '.' (в данном случае числом 0x002e2e2e) то пишите в однирарных кавычках , хотя скорее всего вы хотели так cтроку описать
    4)
    зачем вам выделять ещё одну переменную для размера статической строки если её можно всегда получить через sizeof(str) ?
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    простите, но с учетом нуля. Во втором случае вообще 18 должно быть.

    нет.

    WCHAR UnicodeBuffer[] = L"Hello World";
    ULONG UnicodeLength = sizeof(UnicodeBuffer);
     
  4. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    [double]
     
  5. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    Great мда... всё никак не приучу себя к нормальному режиму сна, глянул на свой вчерашний пост сейчас ужаснулся хD
    ПС люди не верьте мне в такое время
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Внеси в подпись :)
     
  7. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    IceStudent сделано)
     
  8. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    ...правдой?
    Истиной (как TRUE) пишется с одной "н",
    с другой стороны, на форуме слово "истинной" в самый раз ;D))
     
  9. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    так как истину я пока не познал, так что пока только касательно истинности выражений :)