Форум программистов, компьютерный форум CyberForum.ru

fopen и путь к файлу c русскими буквами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.79
swed
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 12
06.06.2011, 20:40     fopen и путь к файлу c русскими буквами #1
Всем привет
Вот столкнулся с такой проблемой - необходимо открыть файл, путь к которому вводится в консоли. Для открытия файла использую сишную функцию fopen, при этом файлы, путь к которым содержит только латинские буквы, успешно открываются(указатель не указывает NULL), а если в пути появляются русские буквы(т.е. UTF-8), то файл просто не открывается(указатель указывает на NULL).
WinApi'шные функции CharToOem и AnsiToOem не помогли, а с функцией _wfopen не разобрался. Уважаемые эксперты, прошу Вашей помощи. Заранее благодарен
P.S. вот, собственно, сам исходник
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
using namespace std;
 
int main()
{
    char filename[1024];
    cin.getline(filename, sizeof(filename));
    FILE* in = fopen(filename, "r");
    if(in == NULL) cout << "Error opening file";
    else cout << "File was successfully opened";
    system("PAUSE");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
06.06.2011, 20:45     fopen и путь к файлу c русскими буквами #2
если уж ты используешь iostream то пользуйся и fstream
swed
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 12
06.06.2011, 22:50  [ТС]     fopen и путь к файлу c русскими буквами #3
Цитата Сообщение от pito211 Посмотреть сообщение
если уж ты используешь iostream то пользуйся и fstream
весьма полезное замечание, но моя проблема так и остается в силе
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
06.06.2011, 23:21     fopen и путь к файлу c русскими буквами #4
Цитата Сообщение от swed Посмотреть сообщение
CharToOem и AnsiToOem
OemToCharA
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cstdio>
#include <windows.h>
using namespace std;
 
int main()
{
    char filename[1024];
    cin.getline(filename, sizeof(filename));
    OemToCharA(filename, filename);
    FILE* in = fopen(filename, "r");
    if(in == NULL) cout << "Error opening file";
    else cout << "File was successfully opened";
    return 0;
}
swed
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 12
06.06.2011, 23:49  [ТС]     fopen и путь к файлу c русскими буквами #5
igorrr37, спасибо, все заработало
Yandex
Объявления
06.06.2011, 23:49     fopen и путь к файлу c русскими буквами
Ответ Создать тему
Опции темы

Текущее время: 14:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru