Ho delle stringhe di input che contengono solo cifre (solo le semplici latine, 0-9, quindi ad esempio "0123"), memorizzate come std :: wstring, e ho bisogno ciascuno come un char *. Qual è il modo migliore per me di farlo? Questo è il mio approccio iniziale:Conversione da std :: wsting a char * con wcstombs_s
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());
}
MODIFICA: Il codice seguente funziona. Ringrazia tutti!
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) doesnt fare ciò che u think fa; ti dice quanto è grande il puntatore. – pm100
Grazie, ho aggiornato il codice. Pensavo che wcstombs_s volesse la dimensione del puntatore per qualche motivo. –
E non funziona ancora? –