Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Некорректное построчное чтение из файла UNICODE

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Некорректное построчное чтение из файла UNICODE
Имя
Сообщение << Старые топики   Новые топики >>
Некорректное построчное чтение из файла UNICODE - 2010-07-02 12:55:50.143333   
progumpergump

Сообщений: 42
Оценки: 0
Присоединился: 2010-02-01 12:28:16.273333
Всем доброго времени суток!

Вот две функции на языке C++:
quote:


#include &lt;iostream&gt;
#include &lt;stdio.h&gt;
#include &lt;vector&gt;
#define max_size_buf (max_size_query+6)
std::vector&lt;std::wstring&gt; listbox;
bool writeInLog(std::wstring str,unsigned int flags)
{
DWORD num=0;
str.append(L"@@");
wchar_t buf[4];
swprintf(buf,L"%u",flags);
str.append(buf);
str.append(L"\r\n");
HANDLE hFile=CreateFile(TEXT("log.txt"),FILE_APPEND_DATA,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if (!hFile) return false;
WriteFile(hFile,str.c_str(),str.length()*2,&num,NULL);
CloseHandle(hFile);
return true;
}
void SetList()
{
wchar_t buf[max_size_buf]={1};
FILE *fd = _wfopen (L"log.txt", L"rt");
if (fd)
{
while (!feof(fd))
{
fgetws(buf,max_size_buf,fd);
listbox.push_back(std::wstring(buf,max_size_buf));
}
}
else fd = _wfopen (L"log.txt", L"wt");
fclose(fd);
}


Проблема в следующем. После считывания функцией fgetws в buf, считывается строка, но после каждого символа ставится нулевой символ (см. скрин: Скрин. Не смог вложить в тему, пришлось заливать! ).
М.б. проблема при записи в файл, т.е. при записи после каждого символа вставляется нулевой, но не знаю как проверить. Что либо о нулевых символах в функции fgetws не нашёл, но может быть из-за моего хренового знания английского.
Спасибо за внимание!
Post #: 1
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Некорректное построчное чтение из файла UNICODE







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.