Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.94
DPS
32 / 32 / 3
Регистрация: 12.11.2011
Сообщений: 109
Завершенные тесты: 1
#1

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

29.02.2012, 13:02. Просмотров 2686. Ответов 5
Метки нет (Все метки)

Добрый день!!! Ребят, проконсультируйте, пожалуйста)
Программа, которая записывает текст в файл до тех пор, пока не введена пустая строка. Собственно говоря, как сделать так, чтобы вывод в файл, если я ввожу строку на русском языке, выполнялся корректно. Т.е. строка "русский язык" отображается в файле как "агббЄЁ© п§лЄ" .На английском все нормально)
И еще один вопрос: файл не открывается, если в пути к нему существует русская директория, например: 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.02.2012, 13:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод в файл на русском языке (C++):

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

Вывод числительных на русском языке. - C++
Напишите программу, которая читает целое положительное число в десятичном представлении, а на выходе выдает это же число в десятичном...

Вывод значений на Русском языке - C++
Доброе всем время суток. Не получается вывести вводимые значения на Русском языке на экран. Подскажите, как это сделать. ...

Ввод и вывод строк на русском языке (кирилице) - C++
Здравствуйте уважаемые форумчани! При решении упражнения возникла следующая проблема, необходимо было выполнить ввод своего имени и...

Как реализовать ввод/вывод текста на русском языке? - C++
Вечер добрый, друзья. Вот только что зарегистрировался, т.к. уже нет сил бороться с одной проблемой. Перерыл весь cyberforum, но так и не...

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

5
Shandr_71
13 / 13 / 1
Регистрация: 05.12.2011
Сообщений: 84
29.02.2012, 17:41 #2
C++
1
setlocale(0, "Rus");
1
DPS
32 / 32 / 3
Регистрация: 12.11.2011
Сообщений: 109
Завершенные тесты: 1
29.02.2012, 18:38  [ТС] #3
Спасибо большое!!! Действительно, работает!!!
А чем, собственно говоря, различаются
C++
1
setlocale(0, "Rus");
и
C++
1
setlocale(LC_ALL, "Russian");
0
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()) //проверка открытия
А зачем проверять?
По идее файлы, куда выводится информация создаются заново, разве нет.
0
DPS
32 / 32 / 3
Регистрация: 12.11.2011
Сообщений: 109
Завершенные тесты: 1
29.02.2012, 19:15  [ТС] #5
Цитата Сообщение от AncinetHero Посмотреть сообщение
А зачем проверять?
По идее файлы, куда выводится информация создаются заново, разве нет.
Так в книжках пишут, что проверка открытия считается хорошим тоном

И опять-таки, можно увидеть, что файл не открывается(не может быть создан). Это возможно, как у меня написано выше, если в пути к нему существует русская директория, например: D:/флеха/test.txt, если же путь будет на английском языке D:/flash/test.txt, все будет нормально и файл будет создан.
0
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
1
29.02.2012, 23:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.02.2012, 23:17
Привет! Вот еще темы с ответами:

Сохранить в файл текст, введенный из консоли, на русском языке - C++
ввожу с клавиатуры данные в структуру, сохраняю их в файл, а потом опять вывожу на экран. в консоли все нормально, а вот если текстовый...

Не могу открыть файл, размещенный в папке с именем на русском языке - C++
Файл на D:\Решетова_Н\Галкин\Всякое Если помещаю файл непосредственно на D - все работает. Думаю дело в русскоязычных названиях папок.......

Даны файл содержащий текст на русском языке и некоторые буквы - C++
Здравствуйте! Помогите пожалуйста с программой. Дали задачу: Даны файл содержащий текст на русском языке и некоторые буквы.Найти...

Дан файл,содержащий текст на русском языке.& Дана строка, - C++
#1 Дан файл,содержащий текст на русском языке.Определить сколько раз встречается самое длинное слово. #2 Дана строка,состоящая из...


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

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

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