powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / C++ [игнор отключен] [закрыт для гостей] / std::ofstream и char8_t
15 сообщений из 40, страница 2 из 2
std::ofstream и char8_t
    #40084533
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlfopen() а что?

Код: sql
1.
2.
std::wstring filename(L"aaa.txt");
fopen(filename.c_str(), L"r");


Так? И компилятор жрёт? И оно работает?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
std::ofstream и char8_t
    #40084534
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

White Owlfopen() а что?

Код: sql
1.
2.
std::wstring filename(L"aaa.txt");
fopen(filename.c_str(), L"r");


Так? И компилятор жрёт? И оно работает?..
Вот так.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#include <stdio.h>

int main(int argc, char **argv) {
	char buf[1024];
	FILE *fp = fopen(argv[1], "r");
	fgets(buf, sizeof(buf), fp);
	fclose(fp);
	puts(buf);
	return 0;
}

А то что имя файла в юникоде и текст в юникоде - программиста не колышет, для этих тонкостей ОС есть.

А то что ты нарисовал со всякими wstring и модификаторами констант - это извращение и уродство.
...
Рейтинг: 0 / 0
std::ofstream и char8_t
    #40084603
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Вот так.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#include <stdio.h>

int main(int argc, char **argv) {
	char buf[1024];
	FILE *fp = fopen(argv[1], "r");
	fgets(buf, sizeof(buf), fp);
	fclose(fp);
	puts(buf);
	return 0;
}

А то что имя файла в юникоде и текст в юникоде - программиста не колышет
Это всё, конечно, прэлэстно, но petrav "яростно топил" за UTF32.
И вот тут, лично у меня, возникает вопрос: как скормить в Цэ-API строку, три четверти байт которой - нулевые.
...
Рейтинг: 0 / 0
std::ofstream и char8_t
    #40084627
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

petravUTF32.

Вот видишь, Сов говорит, что UTF-32 не нужен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
std::ofstream и char8_t
    #40084644
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Это всё, конечно, прэлэстно, но petrav "яростно топил" за UTF32.
И вот тут, лично у меня, возникает вопрос: как скормить в Цэ-API строку, три четверти байт которой - нулевые.
Скормить где и куда?

Как данные для прочитать из файла/базы, потом нарисовать на экране текст и обратно прочитать из поля ввода и записать в базу? Это отработано уже десятилетия. Любой посетитель этого топика (ну кроме совсем уж студентов первогодок) это делал неоднократно.

А вот то что тут так яростно обсуждается по запихиванию юникодных строк в исходный текст программы - вот это дурацкий вопрос и совершенно не нужное извращение. Хотя да, с технической точки зрения можно использовать модификаторы строк объясняя компилятору что вот сейчас мы сойдем с ума и будем запихивать в исходник широкую строку.
...
Рейтинг: 0 / 0
std::ofstream и char8_t
    #40084648
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это уже примерно третий топик на тему utf-8.
...
Рейтинг: 0 / 0
std::ofstream и char8_t
    #40084653
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlЭто отработано уже десятилетия. Любой посетитель этого топика (ну кроме совсем уж
студентов первогодок) это делал неоднократно.

Да, да. Один пользователь сохраняет файл "абв", второй пользователь пытается открыть файл
"абв" и получает "файл не найден". Любой посетитель этого топика тут же поймёт "опаньки, у
них разные локали, а любая линуховая файловая система воспринимает имя файла чисто как
последовательность байт". Щазззз...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
std::ofstream и char8_t
    #40084765
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Да, да. Один пользователь сохраняет файл "абв", второй пользователь пытается открыть файл
"абв" и получает "файл не найден". Любой посетитель этого топика тут же поймёт "опаньки, у
них разные локали, а любая линуховая файловая система воспринимает имя файла чисто как
последовательность байт". Щазззз...
эээ... Как бы тебе сказать.... Да.

Вот с линуксовой машины я свободно открываю файлы с юникодными именами (кириллица и хирагана) записанные на NAS. В том числе и тем примитивным кодом что я тут показал пару постов тому назад.

А вот на Вин10, есть у меня программка обучения японского которая и создает эти самые файлы с хираганой в имени - так вот обратно она их открыть не может "no such file". Сама создала, сама потеряла. Поэтому приходится следить чтобы все файлы она создавала с английскими именами, либо заходить на NAS с линуксовой машины и переименовывать файлы. Причем это переименование я могу делать как в sh, так и в Nemo, и даже в линуксовой версии FAR.
...
Рейтинг: 0 / 0
std::ofstream и char8_t
    #40084824
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlя свободно открываю файлы с юникодными именами (кириллица и хирагана) записанные на NAS.

А теперь, внимание, вопрос: какая файловая система и протокол доступа?

Повторяю медленно: ты создаёшь файлы не "с кириллицей и хираганой", а с пачкой байт в
которую твоя кириллица и хирагана воспроизводимо конвертируются. Локалью, гвоздиком
прибитой в utf-8.

Твои коллеги в дельфийском разделе, обращаясь к неинициализированным переменным и мусору в
освобождённой памяти тоже говорят "так работает же всё уже десятки лет", ага...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
std::ofstream и char8_t
    #40084826
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поскольку Белый Сова работает с Linux, то основные протоколы доступа к фс специфицированы на уровне слоя VFS.
Тоесть если VFS гарантирует точное сохранение имен файлов как неспецифицированных блобов то и реализации
такие как ext4, xfs, btrfs ... e.t.c. нормально схавают любые коды символов и сохранит их "as is".

IMHO.
...
Рейтинг: 0 / 0
std::ofstream и char8_t
    #40084829
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот именно про это я и говорил. Всё работает пока текущая пользовательская локаль прибита
гвоздиком. Шаг влево-шаг вправо - опаньки.

Хотя с его NAS-ом оно может работать и с любой локалью поскольку (внезапно) там NTFS и
SMB, а линуховский драйвер NTFS переводит байты из текущей локали в (опять внезапно) юникод.

Поэтому разбудите меня, когда из ядра выпилят все локали кроме utf-8, чтобы настало
единообразное благолепие.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
std::ofstream и char8_t
    #40084830
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO сложно будет с Collation.
...
Рейтинг: 0 / 0
std::ofstream и char8_t
    #40084838
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие ещё collation? У Сова программы принимают строки как есть и используют как есть,
(только) поэтому работают.

Регистронечувствительность (в том числе файловых систем) - от Лукавого.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
std::ofstream и char8_t
    #40086419
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav, я и сейчас прекрасно пользуюсь utf8 в обычном std::string (basic_string<char>) вместе со стеком GTK+ и горя не знаю. В GTK+ даже под вендой всё на utf8... Выставил при старте приложухи локаль "ru_RU.UTF-8" и норм. Если надо вывести в поток в другой кодировке, выставил через imbue() локаль для ostream и пиши сколько влезет.
В чём проблема?

Просто сделали std::u8string ТОЛЬКО для utf8. По мне так очень удобно! Можно хранить всё в utf8, а для всего остального использовать системную локаль и всё будет прекрасно перекодироваться туда-обратно.
...
Рейтинг: 0 / 0
std::ofstream и char8_t
    #40087337
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, прикрутят ICU, настроят локаль, пнут в эту библиотеку строку, получат ключ сортировки и будут его сравнивать.
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / std::ofstream и char8_t
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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