Как набрать OMstring на символе *

Я использую Rhapsody OMString, и мой код должен типизировать OMstring в char *

 reader.readStream((unsigned char *)MachineType,machineTypeDataSize);  // MachineType is OMString

Можно ли привести OMString к char *

0

Решение

Если вы посмотрите на документацию ( http://pic.dhe.ibm.com/infocenter/rhaphlp/v7r6/index.jsp?topic=%2Fcom.ibm.rhp.frameworks.doc%2Ftopics%2Frhp_r_fw_omstring_class.html ), вы всегда можете использовать operator [], чтобы создать себе небольшую служебную функцию, которая преобразует объект OMString в std :: string, а затем использует метод cdstr () std :: string, чтобы получить его const char * content:

#include <string>
#include <omstring.h>

std::string omStringToStdString( const OMString& in )
{
std::string result( in.GetLength(), '\0' );

for ( std::string::size_type i = 0; i < result.length(); ++i )
{
result[ i ] = in[ i ];
}

return result;
}

РЕДАКТИРОВАТЬ: очевидно, OMString имеет оператор *, который возвращает const char * указатель на содержимое строки: ( http://pic.dhe.ibm.com/infocenter/rhaphlp/v7r6/index.jsp?topic=%2Fcom.ibm.rhp.frameworks.doc%2Ftopics%2Frhp_r_fw_operator_customize.html ), поэтому вам на самом деле не нужна функция преобразования, которую я разместил выше.

РЕДАКТИРОВАТЬ # 2: Хорошо, перечитывая вопрос OP, теперь у меня складывается впечатление, что он не хочет читать из строки OMS, но писать в одну. В этом случае метод OMString :: GetBuffer () предоставляет вам прямой доступ к внутреннему буферу объекта. Будьте осторожны, однако, вы можете легко повредить внутреннее состояние объекта OMString, если напишите больше символов, чем в буфере есть место (и, возможно, если вы вставите символы \ 0 до фактического конца буфера).

0

Другие решения


По вопросам рекламы [email protected]