Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 29.10.2014
Сообщений: 33
1

Не могу открыть файл, размещенный в папке с именем на русском языке

29.10.2014, 15:39. Просмотров 1776. Ответов 17
Метки нет (Все метки)

Файл на D:\Решетова_Н\Галкин\Всякое
Если помещаю файл непосредственно на D - все работает. Думаю дело в русскоязычных названиях папок.... чем тут можно исправить ситуацию?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2014, 15:39
Ответы с готовыми решениями:

Проверить есть ли в папке файл с заданным именем; если нет такого, то открыть другой
Когда открываю форму она загружает в два picturebox 2 картинки, необходимо проверить есть ли в...

Кодировка. При добавлении пользователя с именем на русском языке получаю в данных иероглифы.
mysql_connect($host, $user, $pswd) or die ("не могу соедениться с MySQL");...

Вывод в файл на русском языке
Добрый день!!! Ребят, проконсультируйте, пожалуйста) Программа, которая записывает текст в файл...

Не могу выбрать данные из базы если значения на русском языке
$result=mysql_query("SELECT * FROM `contract` WHERE `org` = '$org' &&`con`='$con'"); если я `org`...

17
37 / 37 / 25
Регистрация: 30.10.2013
Сообщений: 211
29.10.2014, 15:42 2
Natalia_R, давай код
0
0 / 0 / 0
Регистрация: 29.10.2014
Сообщений: 33
29.10.2014, 15:47  [ТС] 3
Это простой пример работы с файлами
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstddef>
#include <cmath>
#include<locale.h> 
using namespace std;
//Прототип функции для чтения числа из файла:
double inputf(ifstream &f,char s[40]);
//Прототип функции для записи числа в файл:
void outputf(ofstream &f,double a, char s[40]);
void main()
{setlocale(LC_ALL,"Russian");//Русификация
double a,b;//Объявляем переменные
ifstream f;//Объявляем поток чтения из файла
ofstream f1;//Объявляем поток записи в файл
char str[40];//Строковая переменная (для пути к файлу)
cout<<"\n Ввести имя файла для чтения числа A: \n";
cin>>str;
a=inputf(f,str);//Обращаемся к функции чтения числа из файла
cout<<"\n Прочитанное из файла число A="<<a;
b=pow(a,2);//Возводим в квадрат число A
cout<<"\n b="<<b;
cout<<"\n Ввести имя файла для записи числа A: \n";
cin>>str;
outputf(f1,b,str);//Обращаемся к функции записи числа в файл
cout<<endl;
}
double inputf(ifstream &f,char s[40])//Функция для чтения числа из файла
{double a;
 f.open (s);//Открываем файл
 //Проверка успешности открытия файла:
  if (f.fail()) {cout<<"\n Ошибка открытия файла";
                 exit(1);
                }
 f>>a;//Читаем переменную из файла
 f.close();//Закрываем файл
 return a;
}
void outputf(ofstream &f,double a, char s[40])//Функция для записи
                                               //числа в файл
{f.open(s);//Открываем файл
 //Проверка успешности открытия файла:
   if (f.fail()) {cout<<"\n Ошибка открытия файла";
                  exit(1);
                 }
    f<<a;//записываем переменную в файл
 f.close();//Закрываем файл
}
Добавлено через 2 минуты
мы тут читаем число из файла, возводим его в квадрат и записываем его в файл
0
37 / 37 / 25
Регистрация: 30.10.2013
Сообщений: 211
29.10.2014, 15:58 4
Natalia_R, пример ввода str напишите

Добавлено через 9 минут
Natalia_R, вы вводите "D:\Решетова_Н\Галкин\Всякое" ?
0
0 / 0 / 0
Регистрация: 29.10.2014
Сообщений: 33
29.10.2014, 16:04  [ТС] 5
D:\Решетова_Н\Галкин\Всякое\text1.txt

Вылетает с надписью: Машинный код" завершилась с кодом 1 (0x1).

Если создаю файл на D и путь к нему пишу D:\text1.txt все ок

Добавлено через 1 минуту
имя файла я указываю и файл в котором одна цифра пишу заранее

Добавлено через 4 минуты
Собственно проверила на D:\D\t1.txt тоже все ок, видимо тут все-таки дело в русском шрифте
0
37 / 37 / 25
Регистрация: 30.10.2013
Сообщений: 211
29.10.2014, 16:09 6
Natalia_R, слешы дублируете? то есть что то вида D:\\Решетова_Н\\Галкин\\Всякое\\text1.txt
0
2683 / 1855 / 552
Регистрация: 05.06.2014
Сообщений: 5,345
29.10.2014, 16:15 7
Если помещаю файл непосредственно на D - все работает. Думаю дело в русскоязычных названиях папок.... чем тут можно исправить ситуацию?
Попробуйте сказать system("chcp 1251");. Если не поможет - перекодируйте путь руками из 866 в 1251. Если опять не поможет, то в utf-8. Короче, 99% что проблема в несовпадении кодировок, вокруг которых и надо скакать с бубном.
0
0 / 0 / 0
Регистрация: 29.10.2014
Сообщений: 33
29.10.2014, 16:26  [ТС] 8
не дублирую. Ввожу как писала выше. На том сайте где я выдернула пример слеши не двойные при вводе http://prostocpp.narod.ru/filevv.html. Но если дело в слешах - почему работает если все на английском?

Добавлено через 10 минут
Спасибо всем, кто откликнулся.... завтра буду читать инфу на эту тему, если кто-то что-то подскажет конкретного - заранее спасибо большое.
0
Эксперт PHP
2717 / 2369 / 1108
Регистрация: 14.05.2014
Сообщений: 6,771
Записей в блоге: 1
29.10.2014, 16:30 9
Цитата Сообщение от Natalia_R Посмотреть сообщение
cin>>str;
cin.getline(str, sizeof(str));
0
2572 / 2188 / 233
Регистрация: 03.07.2012
Сообщений: 7,896
Записей в блоге: 1
29.10.2014, 16:33 10
Если это в VS, напишите так:
C++
1
2
3
4
5
6
7
#include <windows.h>
...
    cout<<"\n Ввести имя файла для чтения числа A: \n";
 
    SetConsoleCP(1251);
    cin>>str;
    SetConsoleCP(866);
0
37 / 37 / 25
Регистрация: 30.10.2013
Сообщений: 211
29.10.2014, 16:52 11
Natalia_R, вначале мейна добавь
C++
1
2
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
и убери setlocale(LC_ALL,"Russian");//Русификация
тогда заработает
0
0 / 0 / 0
Регистрация: 29.10.2014
Сообщений: 33
30.10.2014, 09:43  [ТС] 12
ага, вот второй день уже пошел.... Kverter, так как Вы предлагаете - ничего не выходит (#include <windows.h> подключила), причем убираем setlocale(LC_ALL,"Russian");//Русификация - не открывает даже первый файл, возвращаем setlocale(LC_ALL,"Russian") (не убирая ваш код) - работает с каказямбой.

Добавлено через 13 минут
Kerry_Jr НЕ РАБОТАЕТ.
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Добавляем эти две строки - работаем с казяками (setlocale(LC_ALL,"Russian"); тоже работает, без него вообще не открывает)

Добавлено через 11 минут
zer0mail это VS. Ваш вариант - строка ввода пути теперь отображается на русском, но сам файл не открывается начальное фраза о том, что нужно указать путь некорректно отражена, при возвращении setlocale(LC_ALL,"Russian" на место - все работает!
Т.е. у меня подключено две библиотеки
#include<locale>
#include <windows.h> + реализован вариант zer0mail каждый раз при вводе пути к файлу и setlocale(LC_ALL,"Russian") тоже остается.
0
6912 / 5977 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
30.10.2014, 10:00 13
Оставь исходную программу как она приведена у тебя в третьем сообщении, только подключи
C++
1
#include <windows.h>
и после
C++
1
cin >> str;
добавь
C++
1
    OemToCharA(str, str);
0
37 / 37 / 25
Регистрация: 30.10.2013
Сообщений: 211
30.10.2014, 10:03 14
Natalia_R, я не знаю что такое, но у меня работает мой вариант
0
Миниатюры
Не могу открыть файл, размещенный в папке с именем на русском языке  
6912 / 5977 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
30.10.2014, 10:03 15
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstddef>
#include <cmath>
#include<locale.h> 
#include <windows.h>
using namespace std;
//Прототип функции для чтения числа из файла:
double inputf(ifstream &f,char s[40]);
//Прототип функции для записи числа в файл:
void outputf(ofstream &f,double a, char s[40]);
void main()
{setlocale(LC_ALL,"Russian");//Русификация
double a,b;//Объявляем переменные
ifstream f;//Объявляем поток чтения из файла
ofstream f1;//Объявляем поток записи в файл
char str[40];//Строковая переменная (для пути к файлу)
cout<<"\n Ввести имя файла для чтения числа A: \n";
cin>>str;
OemToCharA(str, str)
a=inputf(f,str);//Обращаемся к функции чтения числа из файла
cout<<"\n Прочитанное из файла число A="<<a;
b=pow(a,2);//Возводим в квадрат число A
cout<<"\n b="<<b;
cout<<"\n Ввести имя файла для записи числа A: \n";
cin>>str;
OemToCharA(str, str)
outputf(f1,b,str);//Обращаемся к функции записи числа в файл
cout<<endl;
}
double inputf(ifstream &f,char s[40])//Функция для чтения числа из файла
{double a;
 f.open (s);//Открываем файл
 //Проверка успешности открытия файла:
  if (f.fail()) {cout<<"\n Ошибка открытия файла";
                 exit(1);
                }
 f>>a;//Читаем переменную из файла
 f.close();//Закрываем файл
 return a;
}
void outputf(ofstream &f,double a, char s[40])//Функция для записи
                                               //числа в файл
{f.open(s);//Открываем файл
 //Проверка успешности открытия файла:
   if (f.fail()) {cout<<"\n Ошибка открытия файла";
                  exit(1);
                 }
    f<<a;//записываем переменную в файл
 f.close();//Закрываем файл
}
0
TheCalligrapher
30.10.2014, 10:06
  #16

Не по теме:

Система из двух уравнений с двумя неизвестными:

Natalia_R
Решетова_Н

найти R и Н

P.S. Что-то мне подсказывает, что от Галкина можно ожидать всякого...

0
0 / 0 / 0
Регистрация: 29.10.2014
Сообщений: 33
30.10.2014, 10:41  [ТС] 17
все бы Вам посмеяться :-)

Добавлено через 10 минут
nmcf, спасибо все работает
0
2572 / 2188 / 233
Регистрация: 03.07.2012
Сообщений: 7,896
Записей в блоге: 1
30.10.2014, 17:05 18
Цитата Сообщение от Natalia_R Посмотреть сообщение
при возвращении setlocale(LC_ALL,"Russian" на место - все работает!
Я не предлагал убрать setlocale - она должна остаться!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2014, 17:05

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

Qfile: запись в файл на русском языке
Как записать в файл на русском языке? вот мой код. Не могу понять почему не записывает русский...

Ввод и вывод в файл на русском языке
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt;...

Дан файл, содержащий текст на русском языке
Дан файл, содержащий текст на русском языке. Cоставить в алфавитном порядке список всех слов,...

Дан файл, содержащий текст на русском языке
Дан файл, содержащий текст на русском языке. Выбрать из него только те символы, которые встречаются...

Дан файл содержащий текст на русском языке
Дан файл содержащий текст на русском языке выяснить чего в нем больше букв или цифр Подсчитать...

Подключил файл меню но ссылки отображаются не на русском языке
Создал файл меню со ссылками (meny.php), подключил в нужном месте этот файл &lt;?php include_once...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.