2012-07-02 2 views
0

Хорошо, поэтому я работаю над редактором памяти на C++, у меня есть список смещений, и если я предопределю, что изменить смещение тоже (0x68), тогда он работает, но я было интересно, есть ли способ конвертировать строку, как в cin >> string, и она разделила бы строку на байты или char * s, чтобы она могла использовать их в смещениях? Извините, если это не имеет большого смысла.String to Byte или Char * в C++

ответ

3

std::string класса имеет два метода, которые могут помочь вам:

  • c_str(), что возвращает \0 -завершённого char* строки (AKA "С" -стилем строка);
  • data(), который возвращает содержимое строки в char const*, но без \0 завершение; вам необходимо получить длину отдельно с помощью length() или size().
1

Вы можете вызвать c_str(), чтобы получить исходный массив символов, представляющий строковые данные в виде строки c.

0

Вы можете использовать data() и memcpy() скопировать все байты на другой адрес, или получить доступ к байтам в строке путем индексации объекта строки ...

std::string x; 
if (std::cin >> x) // note: read one whitespace-separated token, use getline for lines 
{ 
    memcpy(p_dest, x.data(), x.size()); // to copy everything... 
    // ...or... 
    p_dest[offset] = x[i]; // copy one character, 0 <= i < x.size() 
}