La conversion de std::wsting char* avec wcstombs_s

J'ai chaînes de caractères qui contiennent uniquement des chiffres (juste la plaine Latin, de 0 à 9, par exemple "0123"), stockés comme std::wstring, et j'ai besoin de chacun d'eux comme un char*. Quelle est la meilleure façon pour moi de faire cela? C'est ma première approche:

void type::convertWStringToCharPtr(_In_ std::wstring input, _Out_ char * outputString)
{
    outputString = new char[outputSize];
    size_t charsConverted = 0;
    const wchar_t * inputW = input.c_str();
    wcstombs_s(&charsConverted, outputString, sizeof(outputString), inputW, input.length());
}

EDIT: Le code ci-dessous fonctionne. Merci à tous!

void type::convertWStringToCharPtr(_In_ std::wstring input, _Out_ char * outputString)
{
    size_t outputSize = input.length() + 1; //+1 for null terminator
    outputString = new char[outputSize];
    size_t charsConverted = 0;
    const wchar_t * inputW = input.c_str();
    wcstombs_s(&charsConverted, outputString, outputSize, inputW, input.length());
}
  • sizeof(outputstring) ne pas faire ce que tu pense que c'est le cas, il vous indique comment big le pointeur est
  • Merci, j'ai mis à jour le code. Je pensais que wcstombs_s voulait la taille d'un pointeur pour une raison quelconque.
  • Et il ne fonctionne toujours pas?
  • Il est maintenant. J'ai mis à jour le post avec le code de travail. Merci!!!!
  • Veuillez veuillez veuillez utiliser unique_ptr<char[]> plutôt que de déclarer un pointeur brut ici.
InformationsquelleAutor Justin R. | 2013-09-05