[解決済み] wcstombs_s を使って std::wsting を char* に変換する。
2022-02-19 08:24:48
質問
数字だけを含む入力文字列があり、std::wstring として保存されています。これを行うための最良の方法は何でしょうか?これは私の最初のアプローチです。
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: 下のコードは動作します。皆さん、ありがとうございます。
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());
}
解決方法は?
バッファに十分なメモリが割り当てられていません。
char * outputString = new char[input.length()];
とする必要があります。
char * outputString = new char[input.length() + 1];
終端NUL文字があるため。
あ、あと、この通り
pm100
のコメントです。
sizeof(outputString)
はポインタのサイズを与えています。そのため
input.length() + 1
これはバッファのサイズです。
関連
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み] std::string を const char* または char* に変換する方法
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] Pythonで整数から文字列に変換する
-
[解決済み] Javaで「ArrayList<String>」を「String[]」に変換する。
-
[解決済み] std::stringのインスタンスを小文字に変換する方法
-
[解決済み] const std::string & をパラメータとして渡す時代は終わったのでしょうか?
-
[解決済み】std::stringからchar*への変換
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む