私は、数字だけを含む入力文字列を持っています(平文のラテン文字、0-9、したがって "0123"など)、std :: wstringとして格納されていますそれぞれがchar *として扱われます。これを行うための最善の方法は何ですか?これは私の初期のアプローチです:std :: wstingをchar *に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());
}
編集:以下のコードは動作します。皆さんありがとう!
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のは、uはそれがないと思う何をすべきか。ポインタがどれくらい大きいのかを教えてください – pm100
ありがとう、私はコードを更新しました。私はwcstombs_sが何らかの理由でポインタのサイズを望んだと思った。 –
まだ動作していませんか? –