ЛБ
Леонид Беляев

Как записывать русские буквы в файл а не кракозябры на c++? Как записывать русские буквы в файл а не кракозябры на c++?



Вот код:

#include
#include
#include
#include
#include
#include

using namespace std;

const int N=256; //Константный размер строки
char *FName="F:\\text.txt";

void ReadFile()
{
cout< char S[N]={""}; //В S будут считываться строки
fstream in1(FName); //Открыли файл для чтения
while (!in1.eof()) //Будем читать информацию пока не дойдем до конца файла
{
in1.getline(S,N); //Построчное считывание информации в S
cout< }
in1.close(); //Закрыли открытый файл
}

void main(){
setlocale(LC_ALL, "rus");
SetConsoleCP(866);

fstream myfile;
string word;
myfile.open("F:\\text.txt", ios::out);

Sleep(1000);

if(myfile.is_open() == 0){
cout << "Ошибка, файл не открылся" << "\n\n";
}else{
cout << "Файл успешно открыт! " << "\n\n";
}

Sleep(2000);

cout << "Что вы хотите записать в файл? " << "\n\n" << "Напишите: ";
getline(cin, word);
myfile << word;

myfile.close();

ReadFile();

//wait
int a;
cin >> a;
}

АГ
Анна Горячева

Попробуйте поменять 866 на 65001. MS давно пора оскопить за такое, он слишком сложные задачи на новичков вешает.

Вы читаете из консоли символы в определенной кодировке, которая превращает их в байты. А пишите в файл уже байты, а не символы.

В результате полученный файл имеет ту же кодировку, что консоль. А консоль на Винде имеет дебильную кодировку из-за соображений обратной совместимости. Число "65001" на Винде обозначает UTF-8. Число 866 означает неведомую DOS-овскую OEM-кодировку, которую только cmd и использует, и никто более.

Евгения
Евгения

Для этого нужно записывать в той же кодировке, в которой собираетесь читать.

Ангельское
Ангельское

Использовать UNICODE

Славик
Славик

может тут добавить надо char bufRus [256] //глобальная переменная bufRus используется в функции Rus, т. е. в директиве #include

Похожие вопросы
C++ добавление в файл
как сохранить exe файл в C++ ?как сохранить exe файл в C++ ?
У меня в некоторых программах вместо русского языка кракозябры!
C# Объединение файлов
Как зарандомить буквы в C#?
Как можно вывести русские буквы в консоль C++ вместе с псевдографической таблицей?
Вместо русских букв в программе кракозябры.
Как записывать нормальные буквы в файл а не кракозябры на c++?
Заголовочные файлы c++
C++, работа с файлами