Всем привет.
Есть такой код:
string ToHex(const string& s, bool upper_case)
{
ostringstream ret;
for (string::size_type i = 0; i < s.length(); ++i)
ret << hex << setfill('0') << setw(2) << (upper_case ? uppercase : nouppercase) << (int)s[i];
return ret.str();
}
int main(int argc, char* argv[]) {
ifstream::pos_type size;
char * memblock;
ifstream file ("program1.cs", ios::in|ios::binary|ios::ate);
if (file.is_open())
{
size = file.tellg();
memblock = new char [size];
file.seekg (0, ios::beg);
file.read (memblock, size);
file.close();
}
string read_bytes = ToHex(memblock, true);
cout << read_bytes << endl;
string need_replace = "707269766174";
size_t pos = read_bytes.find(need_replace);
read_bytes.replace(pos, need_replace.length(), "7075626C6963");
ofstream replaced("rep.cs");
replaced << read_bytes; // ТУТ НУЖНА ПРАВИЛЬНАЯ ЗАПИСЬ В ФАЙЛ
replaced.close();
getchar();
}
Но дело в том после записи в файл, я получаю текст, а не нужный hex.
То есть по коду я заменяю
707269766174
hex адресс на
7075626C6963
. По этому адрессу находится слово "privat". Я его преобразую в hex "public". Но на выходе я получаю не "public" преобразованный из hex, а просто HEX в тексте. Т.е в файле находится это: "7075626C6963"... Надеюсь получилось обьяснить.
Помогите))