На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> wifstream не читается , В файле wifstream число, но число не читается, exception не возникает.
    Есть код:

    ExpandedWrap disabled
      #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)
      В uf1.txt вначале стоит BOM.

      Добавлено
      Но вообще, идея читать юникодовые файлы как простой текст так себе идея. В Стандарте нет типов файлов с внешним представлением, отличным от char. Это внутреннее представление может быть разным, внешнее в лучшем случае должно быть UTF-8. Так что тут либо делать какой-нибудь свой std::codecvt<wchar_t, wchar_t>, с простым always_noconv() == true, либо использовать бинарный ввод-вывод вместо форматного.
        Цитата Qraizer @
        В uf1.txt вначале стоит BOM.

        Спасибо, юникодный формат файла определяется, но мне надо определить, является ли текстовый не юникодный файл в формате ANSI? Существует ли возможность определить это?
          100% нет
          softlandia/cpd
            Цитата Black_Dragon @
            100% нет
            softlandia/cpd

            Спасибо за ссылку, погуглил, нашел:
            https://github.com/AutoItConsulting/text-en...gDetect-C%2B%2B
            все работает.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0338 ]   [ 19 queries used ]   [ Generated: 24.04.24, 21:20 GMT ]