Другие языки программирования и технологии

Такой вопрос с кодировкой в visual studio, мне надо чтобы я мог писать в текстовый файл текст, но пишет кракозябры

#include
#include
#include

using namespace std;

int main() {

setlocale(LC_CTYPE, "Rus");
char text[50];
cin >> text;
ofstream file("text.txt");
file << text;
file.close();

}
файл текстовый .cs или как там его в UTF8 преобразуйте, Вижуал Студио не только комментарии на кириллице, не только вывод в консоль кириллицей, но даже кириллические названия переменных поддерживает
Сергей Каратыгин
Сергей Каратыгин
18 090
Лучший ответ
Павел Чайка А сразу в коде нельзя сделать, что-бы при открытие файла который создан, он был читабельным?
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main() {
system("chcp 1251 > nul");
string test = "Тестовая строка на русском языке.";
cout << "Введите строку на русском языке: ";
string line;
getline(cin, line);
const string filename = "russian.txt"s;
ofstream ofs(filename);
if (ofs.is_open()) {
ofs << test << '\n' << line << '\n';
ofs.close();
}
else cout << "Ошибка: данные в файл " << filename << " не сохранены! \n";
ifstream ifs(filename);
if (ifs.is_open()) {
string line;
while (getline(ifs, line)) cout << line << '\n';
ifs.close();
}
else cout << "Ошибка: файл " << filename << " не найден! \n";
cin.get();
}
Блокнот из русских Windows способен открыть прочитать файл в одной из следюущих кодировок:
win1251 (подписано как ANSI, но это не правильно), utf-8, и 16битный юникод в двух вариантах.

cin с системной консоли считывает русские буквы в кодировке 866, в целях совместимости с DOS.

Программа перекодирования 866 -> win1251 пишется за два часа с чаем. Это впринципе первая моя самостоятельная программа на ряду с обратным перекодировщиком. 866 в utf-8 можно написать за вечер. Связываться с 16битным юникодом не рекомендую, ввиду непортабельности.

Дерзай.
СО
Саша Осипов
4 779
Павел Чайка Я так понимаю что и текстовый файл из файлов он тоже прочитать не сможет?