Ich habe Eingabezeichenfolgen, die nur Ziffern (nur die einfachen lateinischen, 0-9, so zum Beispiel "0123"), gespeichert als std :: wstring, und ich brauche jedes als char *. Was ist der beste Weg für mich, dies zu tun? Dies ist mein erster Ansatz:Konvertieren von std :: wsting in char * mit 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());
}
EDIT: Der folgende Code funktioniert. Danke allen!
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 (output) tut das tun, was u denken, es tut; es sagt Ihnen, wie groß der Zeiger ist – pm100
Danke, ich habe den Code aktualisiert. Ich dachte, dass wcstombs_s aus irgendeinem Grund die Größe des Zeigers wollte. –
Und es funktioniert immer noch nicht? –