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

Вывод в файл на русском языке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.94
DPS
 Аватар для DPS
32 / 32 / 3
Регистрация: 12.11.2011
Сообщений: 107
Завершенные тесты: 1
29.02.2012, 13:02     Вывод в файл на русском языке #1
Добрый день!!! Ребят, проконсультируйте, пожалуйста)
Программа, которая записывает текст в файл до тех пор, пока не введена пустая строка. Собственно говоря, как сделать так, чтобы вывод в файл, если я ввожу строку на русском языке, выполнялся корректно. Т.е. строка "русский язык" отображается в файле как "агббЄЁ© п§лЄ" .На английском все нормально)
И еще один вопрос: файл не открывается, если в пути к нему существует русская директория, например: D:/флеха/test.txt. Если же D:/flash/test.txt, то открывается. Можно ли как нибудь обойти это ограничение?

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
#include<iostream>
#include<fstream>               //поток ввода-вывода
#include<cstring>               //для strlen
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");   //русский язык
    
    char namefile[40];
    char buffer[30];
 
    cin.getline(namefile, 39);      //ввод имени файла
    ofstream out(namefile);
 
    if(out.is_open())           //проверка открытия
        cout<<"Файл успешно открыт"<<endl;
    else
    {
        cout<<"Ошибка открытия файла"<<endl;
        return -1;
    }
 
    while(1)                //цикл, пока строка не будет
    {                       //равна нулю
        cin.getline(buffer,29);
 
        if(strlen(buffer)==0)       //если строка==0(нажат Enter)
        {                           //выход из цикла
            cout<<"Ввод окончен"<<endl;
            out.close();
            return 1;
        }
        out<<buffer<<endl;
    }
 
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.02.2012, 13:02     Вывод в файл на русском языке
Посмотрите здесь:

Вывод числительных на русском языке. C++
C++ Дан файл,содержащий текст на русском языке.& Дана строка,
C++ почему текст сообщения на русском языке в программе на с++ не выводиться на русском языке при работе программы в операционной системе ms doc в конс
C++ Дан файл, содержащий текст на русском языке
Ввод и вывод строк на русском языке (кирилице) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Shandr_71
13 / 13 / 1
Регистрация: 05.12.2011
Сообщений: 84
29.02.2012, 17:41     Вывод в файл на русском языке #2
C++
1
setlocale(0, "Rus");
DPS
 Аватар для DPS
32 / 32 / 3
Регистрация: 12.11.2011
Сообщений: 107
Завершенные тесты: 1
29.02.2012, 18:38  [ТС]     Вывод в файл на русском языке #3
Спасибо большое!!! Действительно, работает!!!
А чем, собственно говоря, различаются
C++
1
setlocale(0, "Rus");
и
C++
1
setlocale(LC_ALL, "Russian");
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
29.02.2012, 18:58     Вывод в файл на русском языке #4
Цитата Сообщение от DPS Посмотреть сообщение
C++
1
2
ofstream out(namefile); 
if(out.is_open()) //проверка открытия
А зачем проверять?
По идее файлы, куда выводится информация создаются заново, разве нет.
DPS
 Аватар для DPS
32 / 32 / 3
Регистрация: 12.11.2011
Сообщений: 107
Завершенные тесты: 1
29.02.2012, 19:15  [ТС]     Вывод в файл на русском языке #5
Цитата Сообщение от AncinetHero Посмотреть сообщение
А зачем проверять?
По идее файлы, куда выводится информация создаются заново, разве нет.
Так в книжках пишут, что проверка открытия считается хорошим тоном

И опять-таки, можно увидеть, что файл не открывается(не может быть создан). Это возможно, как у меня написано выше, если в пути к нему существует русская директория, например: D:/флеха/test.txt, если же путь будет на английском языке D:/flash/test.txt, все будет нормально и файл будет создан.
Shandr_71
13 / 13 / 1
Регистрация: 05.12.2011
Сообщений: 84
29.02.2012, 23:17     Вывод в файл на русском языке #6
Цитата Сообщение от DPS Посмотреть сообщение
Спасибо большое!!! Действительно, работает!!!
А чем, собственно говоря, различаются
C++
1
setlocale(0, "Rus");
и
C++
1
setlocale(LC_ALL, "Russian");
C++
1
#define LC_ALL 0
Yandex
Объявления
29.02.2012, 23:17     Вывод в файл на русском языке
Ответ Создать тему
Опции темы

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