質問するログイン新規登録

質問編集履歴

1

解決方法に関する追記

2018/02/04 16:08

投稿

task4233
task4233

スコア106

title CHANGED
File without changes
body CHANGED
@@ -45,4 +45,56 @@
45
45
  ##実行環境
46
46
  MacOSX High Sierra 10.13.3
47
47
  Xcode version 9.2
48
- Siv3D version 0.2.1
48
+ Siv3D version 0.2.1
49
+
50
+
51
+
52
+ ## 解決したコードとその方法に関する追記
53
+
54
+ ```Cpp
55
+ # include <Siv3D.hpp>
56
+ # include <HamFramework.hpp>
57
+
58
+ #define FOR(i,a,b) for(int i=(int)a;i<(int)b;++i)
59
+ #define REP(i,n) FOR(i,0,n)
60
+
61
+ namespace GameInfo
62
+ {
63
+ // ここでテキストをstd::u32stringであることを明示するために、
64
+ // プレフィックスUおよび、サフィックスsを付与する必要があった。
65
+ const String Title(U"テキスト"s);
66
+ }
67
+
68
+
69
+ void Main()
70
+ {
71
+ Graphics::SetBackground(Palette::White);
72
+ Window::SetTitle(GameInfo::Title);
73
+
74
+ while (System::Update())
75
+ {
76
+ // 中身の処理
77
+ }
78
+ }
79
+
80
+
81
+ ```
82
+
83
+
84
+ C++14ではサフィックスsを指定しないとstringと認識されない?そうです。
85
+
86
+ > C++14環境であれば、std::basic_string用の特殊なリテラルを利用することが可能です。
87
+ > 文字列リテラルに対してサフィックスsを指定することで、string型への変換が行われます。
88
+ [参考にしたページ](http://marycore.jp/prog/cpp/convert-char-to-string/#const%20char%2A%20→%20std%3A%3Astring%20%28C%2B%2B14%29)
89
+
90
+ さらに、Siv3Dのs3d::Stringの定義を調べたところ、(Siv3D/String.hpp参照)
91
+ ```Cpp
92
+ using string_type = std::u32string;
93
+
94
+ String(const string_type& text) : m_string(text) {}
95
+ ```
96
+
97
+ となっていたため、更にstd::stringからstd::u32stringに変換するために、
98
+ プレフィックスUを指定する必要がありました。
99
+
100
+ C++14で変更があったことを知るいい機会になりました。