C++ unable to read line by line a file via wstring utf-8

  c++
#include <sstream>
#include <fstream>
#include <codecvt>
#include <deque>
#include <iostream>
#include <fcntl.h>
#include <io.h>
int main()
{
     _setmode(_fileno(stdout), _O_U16TEXT);
    _setmode(_fileno(stdin),  _O_U16TEXT);
    _setmode(_fileno(stderr), _O_U16TEXT);
    std::deque<std::wstring> lines;
    std::wifstream infile("C:/Users/Administrator/source/repos/ConsoleApplication1/x64/Debug/data.txt");
    infile.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
    if (infile)
    {
        std::wstring line;
        while (std::getline(infile, line))
        {
            std::wstringstream iss(line);
            std::wstring date_, source_, destination_, amount_, comment_;
            if (!(iss >> date_ >> source_ >> destination_ >> amount_ >> comment_)) 
            { 
                continue; 
            }
            else if (date_ == L"-" && source_ == L"-" && destination_ == L"-" && amount_ == L"-")
            {
                break;
            }
            else
            {
                std::cout << L"Добавили ";
                lines.push_back(date_ + source_ + destination_ + amount_ + comment_);
            }
        }
        std::wcout << L"Файл прочитан, закрываем!";
    }
    else
    {
        std::wcout << L"Не удалось открыть файл!";
    }
    for (std::wstring i : lines)
    {
        std::wcout << i << L'n';
    }
}




01.01.2014 Старт Кошелёк 990 Изначально в кошельке было 990 руб
01.01.2014 Старт Карта 7000 А на карте 7000
20.09.2014 Кошелёк Проезд 70 Заплатил за проезд
20.09.2014 Кошелёк Базар 500 Купил фруктов на базаре
asd
2014-09-21 Карта Книги 770.31 Купил книжку по карточке
2014-09-21 Карта Кошелёк 770.31
21.02.2014 Карта Кошелёк 1000 Снял тысячу в банкомате
- - - - -

Hello I am trying to parse a file line by line and write line to my deque. Problem is to parse last wstring with comment. that is kinda impossible to predirect size of commentary that is so different each line… However, I am would be happy to see solution for first item of comment at last… Sadly it does not start reading just closes after opening.

Source: Windows Questions C++

LEAVE A COMMENT