Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
 Аватар для SuperAgent007
1 / 1 / 1
Регистрация: 16.05.2012
Сообщений: 70

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

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

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

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

При выводе в консоль "пи" превращается в "p" и т.д.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.08.2015, 18:02
Ответы с готовыми решениями:

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

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

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

47
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
13.08.2015, 04:03
Студворк — интернет-сервис помощи студентам
Всё таки C#

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;
using System.IO;
using System.Text;
 
namespace FileInOut
{
    class Program
    {
        static void Main(string[] args)
        {
            Encoding encoding = Encoding.Unicode;
            string text_out = "We are what we repeatedly do.\nExcellence, then, is not an act, but a habit.\nΑριστοτελης";
            File.WriteAllText(@"Ελλαδα.txt", text_out, encoding);
 
            Console.OutputEncoding = encoding;
            string[] text_in = File.ReadAllLines(@"Ελλαδα.txt", encoding);
 
            foreach (string line in text_in)
                Console.WriteLine(line);
  
            System.Console.ReadKey();
        }
    }
}
Пишет Unicode текст в файл с названием в Unicode, считывает все обратно и даже выводит на консоль, которую тоже можно заставить показывать Unicode (!).
Миниатюры
Греческие буквы в названии файла  
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
13.08.2015, 04:05
То же - для других кодировок.
Текущую кодировку можно получить из свойства StreamReader.CurrentEncoding
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 05:00
Цитата Сообщение от IrineK Посмотреть сообщение
и даже выводит на консоль, которую тоже можно заставить показывать Unicode (!).
У меня, на этой строчке, необработанное исключение ("Необработанное исключение типа "System.IO.IOException" произошло в mscorlib.dll. Дополнительные сведения: Параметр задан неверно."):
C#
1
Console.OutputEncoding = encoding;
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
13.08.2015, 05:28
Цитата Сообщение от lss Посмотреть сообщение
У меня, на этой строчке, необработанное исключение
windows 7 (eng)
Сборка в VS 2013 Community - работает
Сборка в VS 2010 Ultimate - работает

windows 7(rus)
Сборка в VS 2010 Ultimate - работает

Ищите проблему у себя.

Внизу - код как есть, с греческими символами.
Миниатюры
Греческие буквы в названии файла  
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 05:33
Цитата Сообщение от IrineK Посмотреть сообщение
Ищите проблему у себя.
Конечно, у кого же ещё?
Вот так работает:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.IO;
using System.Text;
 
namespace FileInOut
{
    class Program
    {
        static void Main(string[] args)
        {
            Encoding encoding = Encoding.Unicode;
            string text_out = "We are what we repeatedly do.\r\nExcellence, then, is not an act, but a habit.\r\nμπλθΩ";
            File.WriteAllText("∆∑ξ₤µΩ∞.txt", text_out, encoding);
 
            Encoding encoding_2 = Encoding.UTF8;
            Console.OutputEncoding = encoding_2;
            string[] text_in = File.ReadAllLines("∆∑ξ₤µΩ∞.txt", encoding);
 
            foreach (string line in text_in)
                Console.WriteLine(line);
 
            System.Console.ReadKey();
        }
    }
}
Миниатюры
Греческие буквы в названии файла  
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
13.08.2015, 05:40
Тогда в строке 11 сразу для всего укажите
C#
1
Encoding encoding = Encoding.UTF8;
и пользуйте )
1
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
13.08.2015, 09:23
Цитата Сообщение от lss Посмотреть сообщение
Да.
В VS 2015 не работает.
По логике, вообще компилироваться не должно - конструктор требует const char* или const string&
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 09:28
Цитата Сообщение от Dani Посмотреть сообщение
В VS 2015 не работает.
Сомневаюсь. Как имя файла в код вставляешь?
Цитата Сообщение от Dani Посмотреть сообщение
По логике, вообще компилироваться не должно - конструктор требует const char* или const string&
Цитата Сообщение от tnk500 Посмотреть сообщение
в реализация стандартной библиотеки от микрософт содержит констркторы для wchar_t*.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 09:42
Цитата Сообщение от Dani Посмотреть сообщение
В VS 2015 не работает.
VS 2015
Миниатюры
Греческие буквы в названии файла  
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 09:47
Цитата Сообщение от Dani Посмотреть сообщение
По логике, вообще компилироваться не должно - конструктор требует const char* или const string&
...
Миниатюры
Греческие буквы в названии файла  
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
13.08.2015, 11:20
Цитата Сообщение от lss Посмотреть сообщение
...
Нестандартное расширение.
В G++ не компилируется совсем.
Standard 27.9.1.7
explicit basic_ifstream(const char* s, ios_base::openmode mode = ios_base::in);
explicit basic_ifstream(const string& s, ios_base::openmode mode = ios_base::in);
basic_ifstream(basic_ifstream&& rhs);
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 11:23
Цитата Сообщение от Dani Посмотреть сообщение
Нестандартное расширение.
Кто-то спорит?
Цитата Сообщение от tnk500 Посмотреть сообщение
реализация стандартной библиотеки от микрософт содержит констркторы для wchar_t*. Думаю, ТС пользуется другим компилятором
Цитата Сообщение от Dani Посмотреть сообщение
В G++ не компилируется совсем.
У ТС тоже не компилируется (читай начало темы).
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
13.08.2015, 11:28
lss, хорошо, с этим разобрались.
Как правильно символ тогда вставлять? Может быть в настройках проекта что-то не то.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 11:34
Цитата Сообщение от Dani Посмотреть сообщение
Как правильно символ тогда вставлять? Может быть в настройках проекта что-то не то.
Как правильно - понятия не имею, могу только рассказать, как я делал. Вставлял символ юникода в название файла (открывал Таблицу символов, там есть выбрать - копировать), потом файл Переименовать, Копировать, и вставлял в код имя файла.
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
13.08.2015, 11:41
lss, увы, так тоже не получилось.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 11:45
Цитата Сообщение от Dani Посмотреть сообщение
увы, так тоже не получилось.
Я в чудеса, в программировании, не верю. Раз у меня получается, то и у тебя должно получаться.
Не получается что, конкретно?
0
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
13.08.2015, 11:45
Цитата Сообщение от IrineK Посмотреть сообщение
Всё таки C#
Проблема не в языке, а в Венде.
Около 20-ти лет назад индустрия ИТ осознала, что за границами СШП тоже есть компьютеры и система должна работать с различными наборами букв, в т.ч. в именах файлов и каталогов. Еще лет через пять основная масса диструбутивов ввела в той или иной степени поддержку Юникода и программистам стало возможно работать с различными символами прозрачно, независимо от языка программирования, версии компилятора и т.д.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <string.h>
 
int main() {
  FILE *f= fopen ("files.txt", "r");
  if (!f) return -1;
  char s[80];
  while (fgets (s, 80, f)) {
    printf (s);
    s [strlen(s)-1]= 0;
    FILE *f_= fopen (s, "r");
    if (!f_) continue;
    while (fgets (s, 80, f_)) printf ("\t%s", s);
    fclose (f_);
  }
}
files.txt:
αρχείο_1
αρχείο_2

αρχείο_1:
χορδή 1
χορδή 2
χορδή 3

αρχείο_2:
Строка 1
Строка 2

Вывод программы:
αρχείο_1
  • χορδή 1
  • χορδή 2
  • χορδή 3
αρχείο_2
  • Строка 1
  • Строка 2

У менеджеров из Редмонда, видимо, особое видение ситуации.
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
13.08.2015, 12:06
lss,
Миниатюры
Греческие буквы в названии файла  
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
13.08.2015, 12:24
Файл где лежит?
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
13.08.2015, 12:25
lss, там где исходники.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.08.2015, 12:25

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru