Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Constantius24
67 / 67 / 23
Регистрация: 30.03.2015
Сообщений: 367
#1

Как записать "UNICODE_STRING" в файл? - C++

03.03.2016, 11:50. Просмотров 346. Ответов 18
Метки нет (Все метки)

Запись в файл через ofstream, при попытке записи UNICODE_STRING через << получаю ошибку:
Ошибка C2679 бинарный "<<": не найден оператор, принимающий правый операнд типа "UNICODE_STRING" (или приемлемое преобразование отсутствует)
Как обойти эту проблему?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2016, 11:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как записать "UNICODE_STRING" в файл? (C++):

Записать из строки все буква "А" "а" в файл - C++
Записать из заданной строки все буквы А а в файл. Плз если можно срочно)) Буду очень благодарен)) Желательно на языке для новичков

Как записать структуру в бинарный файл одним "блоком" - C++
Как записать структуру в бинарный файл одним &quot;блоком&quot;, если в структуре есть private данные? struct MyStruct{ char Name; ...

Класс "Комплексное число". Как считать и записать данные в файл? - C++
Надо переделать код программы, чтобы данные шли из входного файла и записывались в выходной Во входном файле 2 комплексных числа a и...

Как записать в файл символы "" - C++
В файл требуется записать строку , которая содержит символ &quot; . Но поскольку ofstream имеет синтаксис с этим символом , он пропускает слово...

Как из масива "а" записать данные в масив "б" но в обратном порядке - C++
#include &lt;vector&gt; #include &lt;iostream&gt; #include &lt;numeric&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

18
nd2
2328 / 1918 / 676
Регистрация: 29.01.2016
Сообщений: 6,266
03.03.2016, 11:52 #2
Цитата Сообщение от Constantius24 Посмотреть сообщение
через ofstream
C++
1
std::wofstream
1
Constantius24
67 / 67 / 23
Регистрация: 30.03.2015
Сообщений: 367
03.03.2016, 12:04  [ТС] #3
с wofstream та же самая ошибка
0
nd2
2328 / 1918 / 676
Регистрация: 29.01.2016
Сообщений: 6,266
03.03.2016, 12:20 #4
Осталось узнать, что такое UNICODE_STRING ?
0
Constantius24
67 / 67 / 23
Регистрация: 30.03.2015
Сообщений: 367
03.03.2016, 12:31  [ТС] #5
Я пытаюсь описать структуру SYSTEM_PROCESS_INFORMATION:
http://www.exploit-monday.com/2013/0...formation.html
Там одним полем стоит UNICODE_STRING ImageName; // Size=8 Offset=56
0
nd2
2328 / 1918 / 676
Регистрация: 29.01.2016
Сообщений: 6,266
03.03.2016, 12:33 #6
Цитата Сообщение от Constantius24 Посмотреть сообщение
SubAuth.h UNICODE_STRING
С++ потоки не знают, что такое UNICODE_STRING.
0
Constantius24
67 / 67 / 23
Регистрация: 30.03.2015
Сообщений: 367
03.03.2016, 12:35  [ТС] #7
А можно конвертировать этот тип в более привычный? Обычное привидение типов не сработало
0
nd2
2328 / 1918 / 676
Регистрация: 29.01.2016
Сообщений: 6,266
03.03.2016, 12:44 #8
Можно попробовать определить оператор:
C++
1
2
3
4
5
6
7
8
std::wofstream& operator<<(std::wofstream& wout, const UNICODE_STRING& str)
{
    wout << str.Buffer; 
}
//...
    UNICODE_STRING str;
    std::wofstream wfout("file.txt");
    wfout << str << std::endl;
Добавлено через 5 минут
Цитата Сообщение от Constantius24 Посмотреть сообщение
А можно конвертировать этот тип в более привычный?
Можно так попробовать:
C++
1
2
3
4
5
    UNICODE_STRING str;
    std::wofstream wfout("file.txt");
    
    std::wstring wstr(str.Buffer);
    wfout << wstr << std::endl;
0
Constantius24
67 / 67 / 23
Регистрация: 30.03.2015
Сообщений: 367
03.03.2016, 12:49  [ТС] #9
wofstream не захотел работать с wstring через <<
бинарный "<<": не найден оператор, принимающий правый операнд типа "std::wstring" (или приемлемое преобразование отсутствует)
Добавлено через 1 минуту
Кстати поле Buffer это PWSTR, может быть сним можно что-то сделать
0
nd2
2328 / 1918 / 676
Регистрация: 29.01.2016
Сообщений: 6,266
03.03.2016, 12:56 #10
Цитата Сообщение от Constantius24 Посмотреть сообщение
wofstream не захотел работать с wstring через <<
Что-то не то у тебя... #include <string> сделан?
0
Alex xelA
100 / 38 / 10
Регистрация: 27.02.2016
Сообщений: 112
Завершенные тесты: 1
03.03.2016, 12:56 #11
Вот как раз unicode_str.Buffer это и есть желаемые данные.
UNICODE_STRING это по сути небольшая обертка над строкой, которая дополнительно хранит ее длину. Поэтому в определенных случаях можно использовать строки, которые не кончаются нулем.
0
nd2
2328 / 1918 / 676
Регистрация: 29.01.2016
Сообщений: 6,266
03.03.2016, 13:01 #12
Constantius24, вот так всё работает:
C++
1
2
3
4
5
6
    UNICODE_STRING str;
    str.Buffer = L"asdf qwert";
    std::wofstream wfout("file.txt");
    
    std::wstring wstr(str.Buffer);
    wfout << wstr << std::endl;
0
Убежденный
Системный программист
Эксперт С++
15634 / 7144 / 1130
Регистрация: 02.05.2013
Сообщений: 11,583
Записей в блоге: 1
Завершенные тесты: 1
03.03.2016, 13:02 #13
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
UNICODE_STRING хранит в Buffer самую обычную строку в UTF-16.
Тонкость лишь в том, что она может не завершаться нулем, поэтому требует
особого к себе отношения. Можно сконвертировать ее в wstring как-то так:
C++
1
2
3
4
5
6
std::wstring ToString(UNICODE_STRING const & UniStr)
{
    std::wstring Str;
    Str.append(UniStr.Buffer, UniStr.Length / sizeof (wchar_t));
    return Str;
}
2
Constantius24
67 / 67 / 23
Регистрация: 30.03.2015
Сообщений: 367
03.03.2016, 13:29  [ТС] #14
C++
1
2
std::wstring s = ToString(pinfo->ImageName);
fout << s;
Ошибка во второй строчке, wofstream не хочет хавать wstring
Как записать "UNICODE_STRING" в файл?
0
shmkv
600 / 314 / 41
Регистрация: 21.07.2015
Сообщений: 896
03.03.2016, 13:32 #15
Как fout объявлен?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2016, 13:32
Привет! Вот еще темы с ответами:

Sos! Записать класс Stack в файл, "крашит" - C++
Ребятки!! Помогайте! Не могу разобраться с записью\чтением в файл(методы Read и Write)...По коду вроде всё прозрачно,но намудрил с...

Записать в другой текстовый файл только слова, начинающиеся на букву "a" - C++
Привет всем! Помогите пожалуйста разобраться с задачей. Задача такая: Дан текстовый файл. Записать в другой текстовый файл только слова,...

В файл с помощью структуры записать следующие данные: "название папки, ее размер, дата создания" - C++
Добрый день! Есть файл в нем с помощью структуры надо записать такие данные: &quot;название папки,ее размер, и дата создания&quot;. После заполнения...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
03.03.2016, 13:32
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru