Hello,
I have the following methods I've written to convert
from String* to std::string and back:
static void ConvertFromStdString(std::string& inStr,
System:String* outStr)
{
outStr = new String(inStr.c_str());
}
static void ConvertToStdString(System::String* inStr,
std::string& outStr)
{
int len = inStr->Length();
char* charStr = __nogc new char[len + 1];
for (int i = 0; i < len; i++)
{
charStr[i] = (char)inStr->Chars[i];
}
charStr[len] = '\0';
outStr = charStr;
}
Can anyone tell me if there might be some hidden errors
in these functions (perhaps due to a mixing of managed
and unmanaged variables)?
TIA,

Signature
Akin
aknak at aksoto dot idps dot co dot uk
Julie - 09 Jun 2004 00:17 GMT
> Hello,
>
[quoted text clipped - 23 lines]
> in these functions (perhaps due to a mixing of managed
> and unmanaged variables)?
The second fn will be pretty slow w/ the loop, and the cast to char is a
potential for somewhat undefined behavior for UNICODE characters (specifically,
chars above 8 bits).
You should take a look into Marshal::StringToHGlobalAnsi (and its counterpart
Marshal::FreeHGlobal) to get a copy of the string in one call, and assign that
to std::string.