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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 69, средняя оценка - 4.99
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
16.02.2009, 00:58     Как с консоли записать в файл русский текст #1
Как с консоли записать в файл русский текст?
Если так, то пишется только английский:

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++ Русский текст в консоли (не одно и то же)
C++ пдскажите функцию которая выводит русский текст на экран и его заголовочный файл с++ но не system ( " echo текст " );
Рисование ASCII кодами и русский текст в консоли C++
Как в файл вывести русский текст? C++
C++ Русский текст в консоли
C++ Русский текст в консоли
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Phantom
Эксперт C++
 Аватар для Phantom
3160 / 842 / 15
Регистрация: 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.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
16.02.2009, 23:42  [ТС]     Как с консоли записать в файл русский текст #3
А там точно ничего подключить не нужно?
У меня выдаёт сообщение: 'OemToCharA': identifier not found.
ABTOP
 Аватар для 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++
 Аватар для Phantom
3160 / 842 / 15
Регистрация: 29.12.2008
Сообщений: 952
17.02.2009, 09:25     Как с консоли записать в файл русский текст #5
Цитата Сообщение от qwert Посмотреть сообщение
А там точно ничего подключить не нужно?
У меня выдаёт сообщение: 'OemToCharA': identifier not found.
Ах да, <windows.h> нужно подключить, я забыл.

К предыдущему:
В задаче нужно не в консоль вывести русский текст, а из консоли в файл, поэтому преобразование обратное, не CharToOem, а OemToCharA.
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
17.02.2009, 14:46  [ТС]     Как с консоли записать в файл русский текст #6
Спасибо!
accept
4838 / 3237 / 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
 Аватар для ^Tecktonik_KiLLeR
1145 / 427 / 19
Регистрация: 23.06.2009
Сообщений: 6,153
Завершенные тесты: 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
 Аватар для ^Tecktonik_KiLLeR
1145 / 427 / 19
Регистрация: 23.06.2009
Сообщений: 6,153
Завершенные тесты: 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
 Аватар для ^Tecktonik_KiLLeR
1145 / 427 / 19
Регистрация: 23.06.2009
Сообщений: 6,153
Завершенные тесты: 1
23.08.2009, 14:59     Как с консоли записать в файл русский текст #13
-=ЮрА=-, а это точно ты написал?
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
23.08.2009, 15:08     Как с консоли записать в файл русский текст #14
@lex, #include <windows.h> и ошибок не будет..
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1145 / 427 / 19
Регистрация: 23.06.2009
Сообщений: 6,153
Завершенные тесты: 1
23.08.2009, 17:06     Как с консоли записать в файл русский текст #15
-=ЮрА=- не лучший пример для новичка.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2009, 17:41     Как с консоли записать в файл русский текст
Еще ссылки по теме:

Русский текст в консоли C++
C++ Как записать весь текст в файл
C++ Как записать с консоли в файл русское слово?
Как записать русский текст в файл? C++
Как скопировать текст с консоли (например, то, что вывела программа или ipcоnfig) в текстовый файл? C++

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

Или воспользуйтесь поиском по форуму:
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
23.08.2009, 17:41     Как с консоли записать в файл русский текст #16
Цитата Сообщение от @lex Посмотреть сообщение
-=ЮрА=- не лучший пример для новичка.
Нормальный пример..
-=ЮрА=-, Так как не все понимаю код - делай к ним минимальные примеры работы.
Yandex
Объявления
23.08.2009, 17:41     Как с консоли записать в файл русский текст
Ответ Создать тему
Опции темы

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