Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
1

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

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

Author24 — интернет-сервис помощи студентам
Запись в файл через ofstream, при попытке записи UNICODE_STRING через << получаю ошибку:
Ошибка C2679 бинарный "<<": не найден оператор, принимающий правый операнд типа "UNICODE_STRING" (или приемлемое преобразование отсутствует)
Как обойти эту проблему?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2016, 11:50
Ответы с готовыми решениями:

Криптор exe программ: в начало файла записать пароль. Файл записать как массив байтов
Привет всем. Начал писать криптор и сразу запутался. Как известно, то криптор копирует исходный...

Создать текстовый файл, записать туда информацию. прочесть, серилизовать и записать байтовый поток в другой файл
Привет....помогите пожалуйста, очень надо...и очень срочно. несколько заданий по яве: 1. создать...

Инициализация UNICODE_STRING
Разрезаю строку PWCHAR с помощью strtok() И нужно получившиеся токены в занести в массив...

Структура unicode_string
Помогите разобраться со структурой UNICODE_STRING. Вот ее код: typedef struct _LSA_UNICODE_STRING {...

18
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
03.03.2016, 11:52 2
Цитата Сообщение от Constantius24 Посмотреть сообщение
через ofstream
C++
1
std::wofstream
1
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
03.03.2016, 12:04  [ТС] 3
с wofstream та же самая ошибка
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
03.03.2016, 12:20 4
Осталось узнать, что такое UNICODE_STRING ?
0
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
03.03.2016, 12:31  [ТС] 5
Я пытаюсь описать структуру SYSTEM_PROCESS_INFORMATION:
http://www.exploit-monday.com/... ation.html
Там одним полем стоит UNICODE_STRING ImageName; // Size=8 Offset=56
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
03.03.2016, 12:33 6
Цитата Сообщение от Constantius24 Посмотреть сообщение
SubAuth.h UNICODE_STRING
С++ потоки не знают, что такое UNICODE_STRING.
0
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
03.03.2016, 12:35  [ТС] 7
А можно конвертировать этот тип в более привычный? Обычное привидение типов не сработало
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
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
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
03.03.2016, 12:49  [ТС] 9
wofstream не захотел работать с wstring через <<
бинарный "<<": не найден оператор, принимающий правый операнд типа "std::wstring" (или приемлемое преобразование отсутствует)
Добавлено через 1 минуту
Кстати поле Buffer это PWSTR, может быть сним можно что-то сделать
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
03.03.2016, 12:56 10
Цитата Сообщение от Constantius24 Посмотреть сообщение
wofstream не захотел работать с wstring через <<
Что-то не то у тебя... #include <string> сделан?
0
100 / 38 / 20
Регистрация: 27.02.2016
Сообщений: 135
03.03.2016, 12:56 11
Вот как раз unicode_str.Buffer это и есть желаемые данные.
UNICODE_STRING это по сути небольшая обертка над строкой, которая дополнительно хранит ее длину. Поэтому в определенных случаях можно использовать строки, которые не кончаются нулем.
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
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
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
03.03.2016, 13:02 13
Лучший ответ Сообщение было отмечено Constantius24 как решение

Решение

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
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
03.03.2016, 13:29  [ТС] 14
C++
1
2
std::wstring s = ToString(pinfo->ImageName);
fout << s;
Ошибка во второй строчке, wofstream не хочет хавать wstring
Как записать "UNICODE_STRING" в файл?
0
1375 / 519 / 72
Регистрация: 21.07.2015
Сообщений: 1,304
03.03.2016, 13:32 15
Как fout объявлен?
0
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
03.03.2016, 13:40  [ТС] 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 секунд
Всем спасибо
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
03.03.2016, 13:43 17
Цитата Сообщение от Constantius24 Посмотреть сообщение
fout << ws.c_str() << '\n';
У тебя явно нет этого:
Цитата Сообщение от nd2 Посмотреть сообщение
#include <string> сделан?
1
1375 / 519 / 72
Регистрация: 21.07.2015
Сообщений: 1,304
03.03.2016, 13:48 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
1
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
03.03.2016, 16:17  [ТС] 19
Да, <string> не хватало
0
03.03.2016, 16:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2016, 16:17
Помогаю со студенческими работами здесь

из char* в unicode_string
Извиняюсь, я немного напутал в теме, нужно в wchar . Получаю строку char* buff =...

Из UNICODE_STRING в HANDLE
хотелось бы через IRP пакет получить ProcessID приложения и занести его в HANDLE что у меня...

Сформировать текстовый файл записать в него 20 случайных чисел от-10 до 10 по 1 на строку записать выходной файл умножив
День добрый. Убил день но так и не смог сделать задание так или иначе делаю но получается херня...

Создать структуру из двух строковых полей. Записать в файл n компонент типа этой структуры. В другой файл записать строк
бинарные файлы.Создать структуру из двух строковых полей. Записать в файл n компонент типа этой...

Создать структуру из двух строковых полей. Записать в файл n компонент типа этой структуры. В другой файл записать строк
Бинарные файлы. Создать структуру из двух строковых полей. Записать в файл n компонент типа этой...

В файл записать 10 чисел. Создать новый файл, в который записать только четные числа.
В файл записать 10 чисел. Создать новый файл, в который записать только четные числа.

Создать текстовый файл ft и в итоге записать его как бинарный файл fd
Создать текстовый файл ft, содержащий n строк по 2*m целых чисел. Считать числа из файла ft,...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru