You should be able to find a lot of information on the internet regarding marshaling strings between managed and native code. PInvoke.net is another good place to look for general P/Invoke information.

But I hear you. I also have to do some C/C++ string manipulation after many years of being spoiled by C# and was surprised to realize how difficult (non-obvious/convoluted/verbose) it was to do simple string manipulation.