Mam ciągi wejściowe, które zawierają tylko cyfry (tylko zwykłe łacińskie, 0-9, więc na przykład "0123"), przechowywane jako std :: wstring i potrzebuję każdy jako znak *. Jaki jest najlepszy sposób, aby to zrobić? To jest moje pierwsze podejście:Konwersja std :: wstepna na char * z 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());
}
EDYCJA: Poniższy kod działa. Dziękuje wszystkim!
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) robi to, co u think robi; mówi, jak duży jest wskaźnik – pm100
Dzięki, zaktualizowałem kod. Pomyślałem, że z jakiegoś powodu wcstombs_s chciał mieć rozmiar wskaźnika. –
I nadal nie działa? –