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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 69, средняя оценка - 4.99
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
#1

Как с консоли записать в файл русский текст - C++

16.02.2009, 00:58. Просмотров 9383. Ответов 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
#include <iostream>
using namespace std;
int main ()
{
    setlocale (LC_ALL,".1251");
    char filename [50];
    char str [100];
    cout << "Введите имя создаваемого файла\n";
    cin.getline (filename, 50);
    FILE* f;
    if (!(f = fopen (filename, "wt")))
    {
        cout << "Ошибка создания файла\n";
        return 1;
    }
    cout << "Введите данные\nдля окончания ctrl+z\n";
    while (! feof (stdin))
    {
        cin.getline (str, 100);
        fprintf (f, "%s", str);
        fprintf (f, "\n");
    }
    fclose (f);
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2009, 00:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как с консоли записать в файл русский текст (C++):

Как записать русский текст в файл? - C++
std::ofstream m_fOutput(PathFile); std::string Error = &quot;Ошибка открытия файла&quot;; if (!m_fOutput.is_open()) throw Error;...

Записать текст из консоли в файл - C++
Написать программу выводящую текст в файл (system(&quot;echo text &gt;&gt; text.txt&quot;) не подходит, так как пользователь сам должен вводить текст). ...

Русский текст в консоли - C++
Пользуюсь книгой для обучения visual с++, дан базовый код #include &lt;iostream&gt; using std::cout; using std::endl; int main() { ...

Русский текст в консоли - C++
Проблема банальная - русский текст в консоли. До конца в кодировках я так и не разобрался, поэтому прошу помощи. Я нашел 3 способа как...

Русский текст в консоли - C++
Мне нужно чтобы когда я напишу свое имя по русски и оно выводиться по русски у меня не выходит так выводит разные &quot;крякозавры&quot;, на...

Русский текст в консоли (не одно и то же) - C++
Здравствуйте. В прикрепленной выше темке нашел вот такую программу: #include&lt;iostream.h&gt; #include&lt;cmath&gt; #include&lt;windows.h&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Phantom
Эксперт C++
3164 / 846 / 16
Регистрация: 29.12.2008
Сообщений: 952
16.02.2009, 11:16 #2
В цикле добавьте одну строчку, это решит проблему.
Код
while (! feof (stdin))   
    {   
        cin.getline (str, 100);
		OemToCharA(str,str); //вот эта строчка выполняет нужное преобразование
        fprintf (f, "%s", str);   
        fprintf (f, "\n");   
    }
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
16.02.2009, 23:42  [ТС] #3
А там точно ничего подключить не нужно?
У меня выдаёт сообщение: 'OemToCharA': identifier not found.
ABTOP
36 / 36 / 2
Регистрация: 09.06.2008
Сообщений: 324
16.02.2009, 23:57 #4
1) надо просто CharToOem
2)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
#include <windows.h>
#include <winuser.h>
char* rus(const char* text) 
{
 char *bufRus=new char[strlen(text)];
 CharToOem(text, bufRus);
 return bufRus;
}
int main()
{
 cout<<rus("Привет")<<endl;
 return 0;
}
Phantom
Эксперт C++
3164 / 846 / 16
Регистрация: 29.12.2008
Сообщений: 952
17.02.2009, 09:25 #5
Цитата Сообщение от qwert Посмотреть сообщение
А там точно ничего подключить не нужно?
У меня выдаёт сообщение: 'OemToCharA': identifier not found.
Ах да, <windows.h> нужно подключить, я забыл.

К предыдущему:
В задаче нужно не в консоль вывести русский текст, а из консоли в файл, поэтому преобразование обратное, не CharToOem, а OemToCharA.
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
17.02.2009, 14:46  [ТС] #6
Спасибо!
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
18.02.2009, 05:42 #7
если в notepad.exe квадратики

Код
        fprintf (f, "\n");
Код
        fprintf (f, "\r\n");
(касаемо только файлов, консоль нормально преобразует)
Gera_Alyona
Сообщений: n/a
20.08.2009, 16:39 #8
спасибо
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
20.08.2009, 17:36 #9
У меня твоя прога не работает...ввожу текст хоть и на англ но в тексте ниче не записывает.
а вот как делать что бы на русском писала..сам это использую


Код
// установить вручную шрифт Lucida Console в свойствах окна консоли 
// и запомнить это для всех окон с этим именем
// записать в начале программы строку 
 #include <windows.h>
// записать в начале функции main ( после строки с символом { ) 
// две следующих строки 
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
Добавлено через 5 минут 13 секунд
вот мой код,правда записывает после энтера,а не как у тебя-после ctrl+z
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
#include "stdafx.h"
#include <iostream>
using namespace std;
// установить вручную шрифт Lucida Console в свойствах окна консоли 
// и запомнить это для всех окон с этим именем
// записать в начале программы строку 
 #include <windows.h>
// записать в начале функции main ( после строки с символом { ) 
// две следующих строки 
 
 
 
 
 
using namespace std;
int main ()
{
  SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
        char filename [50];
        char str [100];
        cout << "Введите имя создаваемого файла\n";
        cin.getline (filename, 50);
        FILE* f;
f = fopen (filename, "wt");
 
 
                cin.getline (str, 100);
                fprintf (f, "%s", str);
                fprintf (f, "\n");
        
 
        return 0;
}
Добавлено через 32 секунды
и на русском тоже
Biblio
2 / 2 / 0
Регистрация: 30.04.2009
Сообщений: 27
21.08.2009, 11:32 #10
Вот тут мое решение Русские шрифты в консоли
Темы похожие.
-=ЮрА=-
Заблокирован
Автор FAQ
21.08.2009, 11:38 #11
Я для себя функцию когда-то сделал...
C++
1
2
3
4
5
6
7
8
9
10
11
12
void ru_printf(const char * fmt, const char * str)
{
    char *chBuf;
    if(0 < strlen(str))
    {
        chBuf = (char *)malloc((strlen(str))*sizeof(char));
        sprintf(chBuf,"%s",str);
        CharToOem((LPCTSTR)chBuf,chBuf);
        printf(fmt,chBuf);
        chBuf = (char *)realloc(chBuf,1);
    }
}
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
23.08.2009, 14:58 #12
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
void ru_printf(const char * fmt, const char * str)
{
char *chBuf;
if(0 < strlen(str))
{
chBuf = (char *)malloc((strlen(str))*sizeof(char));
sprintf(chBuf,"%s",str);
CharToOem((LPCTSTR)chBuf,chBuf);
printf(fmt,chBuf);
chBuf = (char *)realloc(chBuf,1);
}
}
Error 2 error C2065: 'LPCTSTR' : undeclared identifier d:\Projects\helps\helps\helps.cpp 19 helps
Error 3 error C2146: syntax error : missing ')' before identifier 'chBuf' d:\Projects\helps\helps\helps.cpp 19 helps
Error 4 error C2059: syntax error : ')' d:\Projects\helps\helps\helps.cpp 19 helps
Error 5 error C3861: 'CharToOem': identifier not found d:\Projects\helps\helps\helps.cpp 19 helps

^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
23.08.2009, 14:59 #13
-=ЮрА=-, а это точно ты написал?
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
23.08.2009, 15:08 #14
@lex, #include <windows.h> и ошибок не будет..
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
23.08.2009, 17:06 #15
-=ЮрА=- не лучший пример для новичка.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2009, 17:06
Привет! Вот еще темы с ответами:

Как в файл вывести русский текст? - C++
Когда русский текст вывожу в файл выводит какую то какафонию как это исправить

Рисование ASCII кодами и русский текст в консоли - C++
Всем добрый вечер. И вот такой вопрос есть. Сначала печатаю в консоли текст а под ним горизонтальную линию. Только вместо линии...

Как записать с консоли в файл русское слово? - C++
В моей программе Объект имеет 2 string значения, 1 на английском , второе на русском.Когда пытаюсь записать данные объекта в файл,...

Как записать весь текст в файл - C++
У меня несколько вопросов не могу никак разобратся. 1)Если мне нужно считать весь текст из файла(текста много,несколько строчек) и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.08.2009, 17:06
Ответ Создать тему
Опции темы

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