Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.98.108] |
|
Сообщ.
#1
,
|
|
|
Есть код:
#include "stdafx.h" #include <fstream> #include <iostream> #include <locale> #include <string> using namespace std; int main() { wstring s= _T("введите любое число"); std::locale Loc = std::locale::global(std::locale("russian")); wifstream is(_T("uf.txt")); wifstream is1(_T("uf1.txt")); int i, i1, a; try { is >> i; is1 >> i1; } catch(...) { wcout << _T("Ошибка чтения файла"); }; wcout <<i<<_T(" ")<<i1 << _T(" ") << s.c_str(); wcin >> a; return 0; } Файл uf.txt не юникодный - читается, файл uf1.txt юникодный не читается. Exctption не возникает. В чем причина? Текстовые файлы и проект прилагаю. Прикреплённый файлReadUnikodTXT_File.rar (5,06 Кбайт, скачиваний: 170) Прикреплённый файлuf.txt (3 байт, скачиваний: 169) Прикреплённый файлuf1.txt (8 байт, скачиваний: 168) |
Сообщ.
#2
,
|
|
|
В uf1.txt вначале стоит BOM.
Добавлено Но вообще, идея читать юникодовые файлы как простой текст так себе идея. В Стандарте нет типов файлов с внешним представлением, отличным от char. Это внутреннее представление может быть разным, внешнее в лучшем случае должно быть UTF-8. Так что тут либо делать какой-нибудь свой std::codecvt<wchar_t, wchar_t>, с простым always_noconv() == true, либо использовать бинарный ввод-вывод вместо форматного. |
Сообщ.
#3
,
|
|
|
Цитата Qraizer @ В uf1.txt вначале стоит BOM. Спасибо, юникодный формат файла определяется, но мне надо определить, является ли текстовый не юникодный файл в формате ANSI? Существует ли возможность определить это? |
Сообщ.
#4
,
|
|
|
100% нет
softlandia/cpd |
Сообщ.
#5
,
|
|
|
Цитата Black_Dragon @ 100% нет softlandia/cpd Спасибо за ссылку, погуглил, нашел: https://github.com/AutoItConsulting/text-en...gDetect-C%2B%2B все работает. |