powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / MSVC и GCC: совместимость кодировок исходников
25 сообщений из 409, страница 2 из 17
MSVC и GCC: совместимость кодировок исходников
    #39895427
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
На Qt я пишу только GUI.
он прав. Пиши всё.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895440
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Он возвращает длину текущего многобайтового символа. В байтах.

Я это знаю уже лет 10-ть.
Я вот вообще тебя не понимаю. Я пишу utf ОТ 1 ДО 4 байт, ты говоришь, "ну да". А потом ты пишешь, "померить mblen." Ты понимаешь, что цифра и латинская буква занимает 1 байт а русская буква 2 байта? Нельзя померить длину utf8 mblen, он выдаст тебе херню.

Вот это меня и раздражает, что в 2019-м году, после стольких лет развития, С++ не предоставляет возможности работать со строками, а только с кучей байт работает!
Потому что это язык для работой с кучами байт и он делает это лучше, чем кто-либо. Хочешь работать с чем-то еще, приделывай всё сверху.

Завтра это костылирование перестанут поддерживать и что тогда?
Оно идеально работает, зачем его поддерживать? Если оно еще не идеально, то после завтра приделают патч.

На Qt я пишу только GUI.
Там в qt есть чуть ли не маленькая галактика, если ты так не хочешь тащить utfcpp. Не нравится тащи вон, boost. Это промышленная либа, которую поддерживают серьёзные люди, всё как тебе нравится.

А utfcpp - это сторонний костыль.
Костыли - это твои потуги с wchar.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895441
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
А что такого Майкрософт разработала? UTF-16? BOM? Я просто не в курсе.

cp1251 и ещё 100500 cp (codepage)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895443
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Ты понимаешь, что цифра и латинская буква занимает 1 байт а русская буква 2 байта?

русские буквы же в ASCii есть по одному байту
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895449
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
crutchmaster
Ты понимаешь, что цифра и латинская буква занимает 1 байт а русская буква 2 байта?

русские буквы же в ASCii есть по одному байту
ну не влазил китайский и сделали utf8 с двумя.
Так?
Или ты антиглобалист?)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895450
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Потому что это язык для работой с кучами байт и он делает это лучше, чем кто-либо. Хочешь работать с чем-то еще, приделывай всё сверху.
imho здравая мысль.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895453
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,

В ASCII 128 символов.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895454
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
petrav
Он возвращает длину текущего многобайтового символа. В байтах.

Я это знаю уже лет 10-ть.

Я вот вообще тебя не понимаю. Я пишу utf ОТ 1 ДО 4 байт, ты говоришь, "ну да". А потом ты пишешь, "померить mblen." Ты понимаешь, что цифра и латинская буква занимает 1 байт а русская буква 2 байта? Нельзя померить длину utf8 mblen, он выдаст тебе херню.
Ну тогда давай с азов, если тебе не сложно.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    char s1[128] = u8"Привет.";
    auto b1 = mblen(s1, std::size(s1)); // == 2.

    char s2[128] = "水."; // Тут был иероглиф.
    auto b2 = mblen(s2, std::size(s2)); // == 3.

    char s3[128] = "Hello.";
    auto b3 = mblen(s3, std::size(s3)); // == 1.



Длина текущего символа в байтах. В чём я не прав?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895458
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Код: plaintext
1.
Тут был иероглиф.

я не спец, но там есть еще не один иероглиф, а лексемы. То есть буква-мастер и буква-клиент.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895461
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

авторДлина текущего символа в байтах.
Какого символа, еще раз?

Что твой код скажет на вот это:
"аaaаааaa110™"
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895466
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
petrav,

авторДлина текущего символа в байтах.

Какого символа, еще раз?

Что твой код скажет на вот это:
"аaaаааaa110™"
1. Это очевидно, не? Если a - латинская, офкосс.

Того символа на который указывает первый аргумент. Т.е. первый символ в строке. Если указатель инкрементировать на размер символа в байтах, то перейдём ко второму символу.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895472
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
petrav,

авторДлина текущего символа в байтах.

Какого символа, еще раз?

Что твой код скажет на вот это:
"аaaаааaa110™"
Вот:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    // Тут глюк с размерами буфера, но ладно.
    char s1[128] = u8"Ыt°";
    char *s2 = s1;
    int b1 = mblen(s2, std::size(s1)); // = 2.
    s2 += b1;
    b1 = mblen(s2, std::size(s1)); // = 1.
    s2 += b1;
    b1 = mblen(s2, std::size(s1)); // = 2.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895481
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
petrav,

авторДлина текущего символа в байтах.

Какого символа, еще раз?

Что твой код скажет на вот это:
"аaaаааaa110™"
А вот мы вычисляем длину строки. Длина строки измеряется в символах, конечно, ни как иначе!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    // Тут глюк с размерами буфера, но ладно.
    char s1[128] = u8"Ыt°";
    char *s2 = s1;
    int b1 = mblen(s2, std::size(s1)); // = 2.
    s2 += b1;
    b1 = mblen(s2, std::size(s1)); // = 1.
    s2 += b1;
    b1 = mblen(s2, std::size(s1)); // = 2.
    s2 += b1;
    b1 = mblen(s2, std::size(s1)); // = 0. Конец строки.
    // И того, три символа и *шесть* байт. Только что написали тест вычисления
    // длины строки в utf-8. Если, конечно, mblen() имеет отношение к utf-8.
    // Что явно не написано, но мультибайтовая кодировка у нас только одна.
    // Нужно конечно явно установить локаль на utf-8.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895485
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
На Qt я пишу только GUI.
он прав. Пиши всё.

Тут нельзя быть правым или не правым. Писать всё на Qt - это вопрос проектирования. Решение зависит от:

1. Целей разработки.
2. Рабочее окружение (люди).
3. Унаследованный код.
4. Философия проектировщика.
5. Планы на будущее.
6. Etc...

Я пишу логику не используя Qt - он только для GUI. Таково проектное решение.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895490
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

Того символа на который указывает первый аргумент.

Всё, дошло, не прав. Я не понял, что делает mblen, думал он считает длину всей строки

Т.е. первый символ в строке. Если указатель инкрементировать на размер символа в байтах, то перейдём ко второму символу.
И вот вместо того, чтобы поставить либу заниматься делом, ты двигаешь указатели, ловишь сегфолты, стреляешь себе ноги и изобретаешь велосипеды, которые давно уже сделаны и их авторы прошлись уже по всем граблям. Зачем?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895493
Z axis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Мне иногда кажется, что мы наблюдаем закат C++. Особенно я в этом уверился когда комитет определил std::byte как strong enum...
А что в этом не так?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895495
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

Какая разница, если у тебя и так уже qt в проекте. Тебе всё равно придётся работать с qt'шным функционалом. Причём тут проектирование?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895497
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Тут нельзя быть правым или не правым.
можно.
Конечно, мы рассуждаем с позиции - новый проект и у нас карт бланш.
Все остальное - ОГРАНИЧЕНИЯ.
Просто скажи, что это уже решено. И всё.
Так как любой новичок читая проблему не врубится в проблему).
Например,
Код: plaintext
1.
2.
3.
4.
QFile file(fileName) ;
if (! file.open(QIODevice::ReadOnly)) {
     QString s = file.errorString()+"\n......
      throw FileErrorException(s) ;


Это гуи или нет?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895499
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
полудух,

В ASCII 128 символов.

127
хм... походу extended ASCii это плод фантазии виндузятников...
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895503
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторchar s1[128] = u8"Ыt°";
можно же конвертнуть в wstring, сделать: .size()/.substr()/.rfind(), затем обратно в string
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895504
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,

127 и нулевой.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895505
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По логике на Qt отвечаю сразу и товарищу crutchmaster .

PetroNotC Sharp
petrav
Тут нельзя быть правым или не правым.
можно.
Конечно, мы рассуждаем с позиции - новый проект и у нас карт бланш.
Все остальное - ОГРАНИЧЕНИЯ.

Нет, это не ограничение, это вопрос проектирования . Может быть мне нужно будет модули логики использовать в проекте где нет Qt. Может там только С++ или gtk.

Писать логику на Qt - вот это ограничение. Да.

PetroNotC Sharp
Просто скажи, что это уже решено. И всё.
Так как любой новичок читая проблему не врубится в проблему).
Например,
Код: plaintext
1.
2.
3.
4.
QFile file(fileName) ;
if (! file.open(QIODevice::ReadOnly)) {
     QString s = file.errorString()+"\n......
      throw FileErrorException(s) ;


Это гуи или нет?

Это вопрос риторический или нет? Или просто разговор поддержать? :)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895508
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Это вопрос риторический или нет? Или просто разговор поддержать? :)
это вопрос по архитектуре.
"инструмент под задачу" (с)
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895510
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
модули логики
строки входные данные или предмет обработки?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39895512
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
И вот вместо того, чтобы поставить либу заниматься делом, ты двигаешь указатели, ловишь сегфолты, стреляешь себе ноги и изобретаешь велосипеды, которые давно уже сделаны и их авторы прошлись уже по всем граблям. Зачем?

Да не двигаю я указатели, я не использую utf-8. Я возмущаюсь, что С++ не поддерживает работу со строками, а мне отвечают, что мол и не нужно в С++ со строками работать -- с кучей байт работать зашибись, идеально.

И я задаюсь вопросом: а зачем такой язык в котором восемь строковых типов, а со строками он не работает? Вот это и называется закат развития и уход в маразм.
...
Рейтинг: 0 / 0
25 сообщений из 409, страница 2 из 17
Форумы / C++ [игнор отключен] [закрыт для гостей] / MSVC и GCC: совместимость кодировок исходников
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]