1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70
1

Греческие буквы в названии файла

12.08.2015, 18:02. Показов 2602. Ответов 47
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть файл в кодировке ISO8859-7 в котором построчно хранятся названия файлов которые необходимо прочитать. В названиях этих файлов встречаются спецсимволы (π; μ; ρ). Проблема в их не корректном чтении или в открытии файлов.

Использую ifstream для работы с файлами, и getline для чтения из файла.

При выводе в консоль "пи" превращается в "p" и т.д.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2015, 18:02
Ответы с готовыми решениями:

Греческие буквы в консольном приложении
Интересует возможность в консольной программе выводить на экран греческие буквы, такие как лямбда,...

Иероглифы в названии файла
Нашёл в интернете код, вытаскивающий файлы из ресурсов проекта: void Extract(WORD wResId, LPWSTR...

Проверка на существование файла с русскими символами в названии
Здравствуйте. Работаю над программой для шифрования файлов. Основную работу сделал, осталось...

Очереди: одна должна содержать гласные буквы, другая - согласные буквы; чтение из файла
помогите написать программу. я понимаю как ее сделать, но не могу реализовать:( В файле записано...

47
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
12.08.2015, 18:05 2
SuperAgent007, попробуйте воспользоваться wifstream
0
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70
12.08.2015, 18:48  [ТС] 3
tnk500, буду благодарен, если распишите подробнее)
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
12.08.2015, 18:52 4
SuperAgent007, а чего тут расписывать? Просто используйте wifstream вместо ifstream, wstring вместо string. Функции-члены — те же самые. getline тот же самый
Вот поподробней: http://stackoverflow.com/a/26153212/4886665 (если простое чтение не сработает, дописывайте функцию imbue из примера).
0
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70
12.08.2015, 19:30  [ТС] 5
tnk500, не могу найти функцию для открытия файла имя которого хранится в wchar_t
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
12.08.2015, 20:05 6
SuperAgent007, конструктор и open не открывают файлы?
0
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70
12.08.2015, 20:13  [ТС] 7
tnk500, вот этот код не работает если fname wstring.

C++
1
2
wifstream f;
f.open(fname.c_str());
Даёт ошибку: "[Error] no matching function for call to 'std::basic_ifstream<wchar_t>::open(const wchar_t*)'"
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
12.08.2015, 21:20 8
Цитата Сообщение от tnk500 Посмотреть сообщение
конструктор и open не открывают файлы?
Они требуют const char*.
0
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70
12.08.2015, 21:28  [ТС] 9
lss, но в char разве можно записать спецсимволы вроде π; μ; ρ (первый это пи, просто почему-то здесь так отображается)?
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
12.08.2015, 21:54 10
Цитата Сообщение от SuperAgent007 Посмотреть сообщение
но в char разве можно записать спецсимволы вроде π; μ; ρ
Если они однобайтовые, то почему нет? Я только не знаю: допускает ли ОС такие символы в именах файлов.

Добавлено через 12 минут
Цитата Сообщение от SuperAgent007 Посмотреть сообщение
Есть файл в кодировке ISO8859-7 в котором построчно хранятся названия файлов которые необходимо прочитать.
А сами файлы где? Как их имена выглядят? Как задавались?
0
Заблокирован
12.08.2015, 21:58 11
Кодировка Unicode
0
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70
12.08.2015, 22:20  [ТС] 12
lss, Файлы лежат в папке рядом, имена у них уже заданы, но можно и самому через таблицу символов им присвоить такие имена. Имена выглядят так: π001.txt; μ255.txt; ρ010.txt (это для примера).
В Windows возможны такие имена

Добавлено через 3 минуты
IrineK, с WinAPI к сожалению не дружу, оставлю это на крайний случай.
Есть ли возможность избежать использования WinAPI?
0
Заблокирован
12.08.2015, 22:28 13
Цитата Сообщение от SuperAgent007 Посмотреть сообщение
Есть ли возможность избежать использования WinAPI?
C#
namespace System.IO
0
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70
12.08.2015, 22:32  [ТС] 14
IrineK, а более хардкорных вариантов чистый C++ не имеет?
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
12.08.2015, 22:48 15
Цитата Сообщение от SuperAgent007 Посмотреть сообщение
имена у них уже заданы
В какой кодировке заданы? Как задавались?
0
1405 / 647 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
12.08.2015, 22:49 16
Попробуйте библиотеки Boost: http://www.boost.org/doc/libs/... /index.htm для Unicode символов в названиях файлов
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
12.08.2015, 23:24 17
Цитата Сообщение от SuperAgent007 Посмотреть сообщение
но можно и самому через таблицу символов им присвоить такие имена. Имена выглядят так: π001.txt; μ255.txt; ρ010.txt (это для примера).
Вот так, у меня, в студии, файл открывается (имя файла в коде и в папке: μ255.txt, здесь так отображается):
C++
1
2
3
4
5
6
    wchar_t str[] = L"μ255.txt";
    ifstream fin(str);
    if (!fin)
        cout << "Error!" << endl;
    else
        cout << "Done!" << endl;
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
12.08.2015, 23:33 18
lss, потому что в реализация стандартной библиотеки от микрософт содержит констркторы для wchar_t*. Думаю, ТС пользуется другим компилятором

Добавлено через 2 минуты
SuperAgent007, короче.
1) Либо воспользуйтесь boost::fstream, как заметил Dani;
2) Либо поставьте Visual Studio (в любом случае не помешает);
3) Либо воспользуйтесь функцией OemToChar, ну тут не гарантирую.
0
1405 / 647 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
12.08.2015, 23:33 19
lss, у меня так не открывается. Чем компилируете? VS 2010?
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 03:46 20
Цитата Сообщение от Dani Посмотреть сообщение
Чем компилируете? VS 2010?
Да.
0
13.08.2015, 03:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.08.2015, 03:46
Помогаю со студенческими работами здесь

В текстовом файле t записаны буквы латинского алфавита и цифры. Занести в текстовый файл h из текстового файла t только латинские буквы.
В текстовом файле t записаны буквы латинского алфавита и цифры. Занести в текстовый файл h из...

Builder xe2 + SQLite + русские буквы в названии файла базы
Названия файла базы данных задется в Edit. При использовании русских букв, вместо них в названии...

Греческие буквы не отображаются на других ПК
В моей программе решаются ряд уравнений. Для лучшего понимания этих уравнений я присвоил ряду...

Вывести греческие буквы в richTextBox
Добрый день! Возник следующий вопрос - можно ли каким-то образом в выводе (например, в richTextBox)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru