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

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

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

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

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

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

Как записать "модуль" синтаксисом С++? C++
Как из масива "а" записать данные в масив "б" но в обратном порядке C++
C++ Класс "Студент" - Как записать ссылку на функцию структуры?
Записать в другой текстовый файл только слова, начинающиеся на букву "a" C++
В файл с помощью структуры записать следующие данные: "название папки, ее размер, дата создания" C++
C++ Класс "Комплексное число". Как считать и записать данные в файл?
Как записать "модуль" синтаксисом C++? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nd2
1501 / 1240 / 418
Регистрация: 29.01.2016
Сообщений: 3,815
03.03.2016, 11:52     Как записать "UNICODE_STRING" в файл? #2
Цитата Сообщение от Constantius24 Посмотреть сообщение
через ofstream
C++
1
std::wofstream
Constantius24
67 / 67 / 23
Регистрация: 30.03.2015
Сообщений: 367
03.03.2016, 12:04  [ТС]     Как записать "UNICODE_STRING" в файл? #3
с wofstream та же самая ошибка
nd2
1501 / 1240 / 418
Регистрация: 29.01.2016
Сообщений: 3,815
03.03.2016, 12:20     Как записать "UNICODE_STRING" в файл? #4
Осталось узнать, что такое UNICODE_STRING ?
Constantius24
67 / 67 / 23
Регистрация: 30.03.2015
Сообщений: 367
03.03.2016, 12:31  [ТС]     Как записать "UNICODE_STRING" в файл? #5
Я пытаюсь описать структуру SYSTEM_PROCESS_INFORMATION:
http://www.exploit-monday.com/2013/0...formation.html
Там одним полем стоит UNICODE_STRING ImageName; // Size=8 Offset=56
nd2
1501 / 1240 / 418
Регистрация: 29.01.2016
Сообщений: 3,815
03.03.2016, 12:33     Как записать "UNICODE_STRING" в файл? #6
Цитата Сообщение от Constantius24 Посмотреть сообщение
SubAuth.h UNICODE_STRING
С++ потоки не знают, что такое UNICODE_STRING.
Constantius24
67 / 67 / 23
Регистрация: 30.03.2015
Сообщений: 367
03.03.2016, 12:35  [ТС]     Как записать "UNICODE_STRING" в файл? #7
А можно конвертировать этот тип в более привычный? Обычное привидение типов не сработало
nd2
1501 / 1240 / 418
Регистрация: 29.01.2016
Сообщений: 3,815
03.03.2016, 12:44     Как записать "UNICODE_STRING" в файл? #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;
Constantius24
67 / 67 / 23
Регистрация: 30.03.2015
Сообщений: 367
03.03.2016, 12:49  [ТС]     Как записать "UNICODE_STRING" в файл? #9
wofstream не захотел работать с wstring через <<
бинарный "<<": не найден оператор, принимающий правый операнд типа "std::wstring" (или приемлемое преобразование отсутствует)
Добавлено через 1 минуту
Кстати поле Buffer это PWSTR, может быть сним можно что-то сделать
nd2
1501 / 1240 / 418
Регистрация: 29.01.2016
Сообщений: 3,815
03.03.2016, 12:56     Как записать "UNICODE_STRING" в файл? #10
Цитата Сообщение от Constantius24 Посмотреть сообщение
wofstream не захотел работать с wstring через <<
Что-то не то у тебя... #include <string> сделан?
Alex xelA
100 / 38 / 10
Регистрация: 27.02.2016
Сообщений: 101
Завершенные тесты: 1
03.03.2016, 12:56     Как записать "UNICODE_STRING" в файл? #11
Вот как раз unicode_str.Buffer это и есть желаемые данные.
UNICODE_STRING это по сути небольшая обертка над строкой, которая дополнительно хранит ее длину. Поэтому в определенных случаях можно использовать строки, которые не кончаются нулем.
nd2
1501 / 1240 / 418
Регистрация: 29.01.2016
Сообщений: 3,815
03.03.2016, 13:01     Как записать "UNICODE_STRING" в файл? #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;
Убежденный
Системный программист
Эксперт С++
14889 / 6707 / 1059
Регистрация: 02.05.2013
Сообщений: 10,998
Завершенные тесты: 1
03.03.2016, 13:02     Как записать "UNICODE_STRING" в файл? #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;
}
Constantius24
67 / 67 / 23
Регистрация: 30.03.2015
Сообщений: 367
03.03.2016, 13:29  [ТС]     Как записать "UNICODE_STRING" в файл? #14
C++
1
2
std::wstring s = ToString(pinfo->ImageName);
fout << s;
Ошибка во второй строчке, wofstream не хочет хавать wstring
Как записать "UNICODE_STRING" в файл?
shmkv
558 / 272 / 37
Регистрация: 21.07.2015
Сообщений: 828
03.03.2016, 13:32     Как записать "UNICODE_STRING" в файл? #15
Как fout объявлен?
Constantius24
67 / 67 / 23
Регистрация: 30.03.2015
Сообщений: 367
03.03.2016, 13:40  [ТС]     Как записать "UNICODE_STRING" в файл? #16
Вот так заработало:
C++
1
2
3
4
UNICODE_STRING us = pinfo->ImageName;
                std::wstring ws;
                ws.append(us.Buffer, us.Length / sizeof(wchar_t));
                fout << ws.c_str() << '\n';
Добавлено через 30 секунд
Всем спасибо
nd2
1501 / 1240 / 418
Регистрация: 29.01.2016
Сообщений: 3,815
03.03.2016, 13:43     Как записать "UNICODE_STRING" в файл? #17
Цитата Сообщение от Constantius24 Посмотреть сообщение
fout << ws.c_str() << '\n';
У тебя явно нет этого:
Цитата Сообщение от nd2 Посмотреть сообщение
#include <string> сделан?
shmkv
558 / 272 / 37
Регистрация: 21.07.2015
Сообщений: 828
03.03.2016, 13:48     Как записать "UNICODE_STRING" в файл? #18
C++
1
2
3
4
5
6
7
8
9
10
#include <fstream>
#include <string>
 
int main() 
{
    std::wofstream fout("1.txt");
    std::wstring str = L"blabla";
    fout << str;
    return 0;
}
http://ideone.com/M6WFgN
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2016, 16:17     Как записать "UNICODE_STRING" в файл?
Еще ссылки по теме:

Как записать имя переменной чтобы она обозначала греческую "фи" C++
Как записать в файл символы "" C++
C++ Как записать структуру в бинарный файл одним "блоком"
Sos! Записать класс Stack в файл, "крашит" C++
C++ От класса "Файл" унаследовать класс "Зашифрованный файл"

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

Или воспользуйтесь поиском по форуму:
Constantius24
67 / 67 / 23
Регистрация: 30.03.2015
Сообщений: 367
03.03.2016, 16:17  [ТС]     Как записать "UNICODE_STRING" в файл? #19
Да, <string> не хватало
Yandex
Объявления
03.03.2016, 16:17     Как записать "UNICODE_STRING" в файл?
Ответ Создать тему
Опции темы

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