C++のstd::stringとDxLibのDrawStringを用いて
script.jsonから文字列データ(日本語の文字列を含む)を読み込んで
Abort() has been called. と警告のポップアップが表示されてしまいます.
追加です
使用ライブラリはnlohmannです
struct Dialog {
int speakerId;
std::string line;
};
main.cpp
std::vector<Dialog> dialogData = LoadDialog("script.json"); // この一行をコメントアウトすると問題なく実行できるようになります.
std::vector<Dialog> LoadDialog(const std::string& filename) {
std::ifstream ifs(filename);
json j;
ifs >> j;
std::vector<Dialog> _dialog{ };
for (auto& e : j) {
Dialog d;
d.speakerId = e["speakerId"].get<int>();
d.line = e["line"].get<std::string>();
_dialog.push_back(d);
}
return _dialog;
}
script.json
[
{
"speakerId" : 4,
"line" : "他の隠し要素も見つけてみてほしいな"
}, {
"speakerId" : 5,
"line" : "スペースキーで戻る"
}, {
"speakerId" : 5,
"line" : " "
}
]
script.jsonをShift-JISで保存したため警告が出たのでしょうか?
DxLibでUTF-8を用いようとするならstd::u8stringを用いるべきでしょうか?