Если аргумент только для ввода , используйте std::string
как этот
std::string text("Hello");
w32function(text.c_str());
Если аргумент ввод / вывод , используйте std::vector<char>
вместо этого:
std::string input("input");
std::vector<char> input_vec(input.begin(), input.end());
input_vec.push_back('\0');
w32function(&input_vec[0], input_vec.size());
// Now, if you want std::string again, just make one from that vector:
std::string output(&input_vec[0]);
Если аргумент только для вывода , также используйте std::vector<Type>
, например:
// allocates _at least_ 1k and sets those to 0
std::vector<unsigned char> buffer(1024, 0);
w32function(&buffer[0], buffer.size());
// use 'buffer' vector now as you see fit
Вы также можете использовать std::basic_string<TCHAR>
и std::vector<TCHAR>
при необходимости.
Подробнее об этом можно прочитать в книге Скотта Мейерса Effective STL .