progumpergump
Сообщений: 42
Оценки: 0
Присоединился: 2010-02-01 12:28:16.273333
|
Всем доброго времени суток! Вот две функции на языке C++: quote:
#include <iostream> #include <stdio.h> #include <vector> #define max_size_buf (max_size_query+6) std::vector<std::wstring> 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 не нашёл, но может быть из-за моего хренового знания английского. Спасибо за внимание!
|