Use CT2CA (and A2W / T2A family) macros when you can. Just take the MSDN warning about not doing it in loops VERY seriously. Got burned in a multithreaded service reading message queue : stack corruption (and only after a couple hours). I like the std:Copy() solution posted elsewhere on CodeProject