Строки С++

Тема в разделе "LANGS.C", создана пользователем xneo, 24 авг 2008.

  1. xneo

    xneo New Member

    Публикаций:
    0
    Регистрация:
    11 авг 2008
    Сообщения:
    9
    Такой вот простой вопрос, для знатоков покажется дурацким... извините, только учусь :)
    В С встречается такое выражение...
    #define aaaa L"Строкакакаято"
    Так вот... Я так понимаю что L здесь указывает на тип строки? Типа там Ansi, Unicode, WideString ... ? Если да то перечислите плиз какие ещё есть.
     
  2. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    Код (Text):
    1. const char *str1 = "abcd"; //ANSI string (8 bits per char)
    2. const wchar_t *str2 = L"abcd"; // UNICODE string (16 bits per char)
     
  3. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Это считаю большим минусов в C.
    Приходится делать так:
    Код (Text):
    1. #ifdef UNICODE
    2.  const char *str1 = "abcd";
    3. #else
    4.  const wchar_t *str1 = L"abcd";
    5. #endif
     
  4. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    KeSqueer
    Ну, учитывая что мир не стоит на месте и уникоде - не окончательное достижение в записи строк, С-шная гибкость дающая возможность достаточно просто учитывать различные колебания моды на стандарты это не просто не минус, а большой плюс. Ваша прога сможет пережить уникоде, отделавшись только несколькими новыми #ifdef
     
  5. z_x_spectrum

    z_x_spectrum New Member

    Публикаций:
    0
    Регистрация:
    18 дек 2007
    Сообщения:
    145
    _basmp_
    сомневаюсь, что появятся какие-то фундаментальные кодировки, кроме ANSI и UNICODE
     
  6. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    z_x_spectrum
    Было время когда и восьмибитная кодировка была экзотикой. И когда ASCII еще стандартом не был. Кроме того, разве уникоде на 100% перекрывает китайские и японские иероглифы? А разве все возможные значки и не сильно распространенные символы с черточками перекрываются? Сначала в уникоде было 2 байта, потом 4, теперь о 8и говорят.. utf8 для упрощения создали. Машины стают очень мощными и наверно в строках будут отражать и особенности рукописного ввода или векторные картинки или форматирование. Вобщем фантазии нет предела.
    Зачем это надо. После введения и старательного рекламирования нового формата ('технологии') клиенты начнут настоятельно требовать ее наличия в продукте не взирая на ее нужность продукту, разрабы будут вынуждены обновлять инструменты и покупать, и лицензировать, и.. одним словом башлять бабки. Таким образом, не надейтесь, что уникоде - последний вывих прогресса.
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Нет ни японских, ни южнокорейских иероглифов. Иероглифы имеют китайское происхождение и в Сингапуре, и в Японии, и в КНР иероглиф передает одно и то же значение (как у европейцев цифры), но вот читаться один и тот же иероглиф даже в Китае (в зависимости от диалекта) будет по-разному. Среднестатистический образованный китаец использует 10-15 тысяч иероглифов, так что unicode возможность кодировать иероглифы перекрывает с лихвой
     
  8. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    KeSqueer, делать надо так:
    Код (Text):
    1. _TCHAR *str = _T("Astring");
    а все #defines уже есть в MS заголовках.
     
  9. ams007

    ams007 New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2007
    Сообщения:
    86
    s0larian, ну хоть кто-то им рассказал правду)
     
  10. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Вы говорите не про С++ строки, а про С-строки :) В С++ std::string/wstring.
     
  11. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    W4FhLF

    std::string это класс. Речь же идет, как я понимаю, о литерах языка.
     
  12. Ursus

    Ursus Member

    Публикаций:
    0
    Регистрация:
    15 мар 2006
    Сообщения:
    238
    Адрес:
    Russia
    Врете вы всё. TCHAR пишется именно так:
    Код (Text):
    1. TCHAR
    а не _TCHAR
     
  13. Ursus

    Ursus Member

    Публикаций:
    0
    Регистрация:
    15 мар 2006
    Сообщения:
    238
    Адрес:
    Russia
    OMFG!!! Ссылочку на источник в студию!
     
  14. Ursus

    Ursus Member

    Публикаций:
    0
    Регистрация:
    15 мар 2006
    Сообщения:
    238
    Адрес:
    Russia
    Э-э... а кто такая "фундаментальная кодировка UNICODE". Выберите из списка: UTF7, UTF8, UTF16, UTF32 ?
     
  15. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    _DEN_
    Фиг знает про что речь. :) В названии темы строки, а спрашивают вообще про стандарты кодирования.
     
  16. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Достаточно первых страничек учебников китайского, корейского, японского языка, там где речь идет о письменной системе, но если Вики подойдет, тогда:
    >Нет ни японских, ни южнокорейских иероглифов. Иероглифы имеют китайское происхождение и в Сингапуре, и в Японии, и в КНР иероглиф передает одно и то же значение (как у европейцев цифры),Используется фонетическое письмо хангыль, специально разработанное для корейского языка в XV веке. Дополнением к хангылю служат ханчча — китайские иероглифы. В Северной Корее используется только хангыль, в Южной Корее — и хангыль, и ханчча.
    Японская письменность обслуживается ка́ндзи (иероглифами заимствованными из Китая), двумя азбуками, созданными в Японии - катакана и хирагана (вместе называемые просто кана́), а также присоединившимися к ним в более позднее время латинскими буквами и арабскими цифрами.
    >но вот читаться один и тот же иероглиф даже в Китае (в зависимости от диалекта) будет по-разному.
    Частый в лингвистике вопрос «язык или диалект?» особенно интересен в ситуации с китайским. С одной стороны, в этом вопросе политический аспект не менее важен, чем лингвистический. С чисто лингвистической точки зрения многие из этих идиомов вполне соответствуют критериям языка. С другой стороны, у всех этих идиомов общий письменный язык и литература, что склоняет чашу весов к их определению как диалектов. Поскольку письменный язык по грамматике наиболее близок к путунхуа (официальный вариант китайского языка, основан на пекинской норме произношения), то многие китайцы воспринимают его как «настоящий» китайский язык, а всё остальное — как диалекты
    >Среднестатистический образованный китаец использует 10-15 тысяч иероглифов
    Из-за непрерывного и постепенного изменения иероглифов невозможно определить их точное количество. Повседневно используемых иероглифов несколько тысяч. Согласно статистике, 1000 обиходных иероглифов покрывают 92 % печатных материалов, 2000 могут покрыть более 98 %, а 3000 иероглифов уже покрывают 99 %. Статистические результаты по упрощенным и традиционным иероглифам различаются незначительно.
     
  17. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Mikl___
    Как бы то ни было, начертания у них слегка отличаются (а где и не слегка) и сложно верить, что такие исторически недолюбливающие друг друга народы договорятся. Как пример, они относятся к разным кодировкам (gb, big5, katakana, hiragana). Опять же, на китае-японских иероглифах свет клином не сошелся. Есть или были и другие расточительные формы письма и все они имеют место в уникоде. А будут еще.. Например, неплоха была бы возможность включать в стандартную строку свои глифы, например в векторной форме. Согласен, структура кодировки будет сложной, но ту-же современную utf8 назвать простой как ASCII трудно. В общем, мысль свою я выразил где-то выше, а все эти иероглифы - пример только.
     
  18. z_x_spectrum

    z_x_spectrum New Member

    Публикаций:
    0
    Регистрация:
    18 дек 2007
    Сообщения:
    145
    Ursus
    WideString, которая передается в АПИ функции с литерой "W"
     
  19. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    _basmp_
    [offtop]Не хочу обидеть, но вопросу по кодировке иероглифов место в хипе или в личной переписке, чему я был бы очень рад :) просто мы начали забивать офтопом WASM.LANG.C [/offtop]
     
  20. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Mikl___
    Ну так а я о чем