質問編集履歴

2

文章を修正

2021/06/24 06:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,24 @@
1
- 提示コードですがstr可変長引数です。以前 (const char *str ,..) という引数とる関数getWchar_t();関数を作成したですが引数のvoid f("%d",a)等の処理で上手く数値かされておらず関数化出来ないではと思い以下ようva_listのコードは関数化で毎回コードを置いてるのですがこの動作は関数化出来ないのでしょうか?
1
+ 提示コードですがReFormatString();関可変長引数で取得した文字列下部のgetTexture();関数の可変長引数に代入いのですが
2
+
3
+ ```ここに言語を入力
4
+
5
+ int a = 0;
6
+
7
+ ReFormatString("font.ttf",10,"%d",a);
8
+
9
+
10
+
11
+ ```
12
+
13
+ となった時に画面に表示される文字がおかしくなります。1と表示されます。数値は関係なく
14
+
15
+
16
+
17
+ ##やりたいこと
18
+
19
+ 可変長引数を取る関数の中でその可変長引数を引数に取る関数を正常に動作させる方法が知りたい。
20
+
21
+
2
22
 
3
23
 
4
24
 
@@ -6,38 +26,76 @@
6
26
 
7
27
  ```cpp
8
28
 
9
- //テクスチャ生成
29
+ // ##################################### 固定文字列変更 #####################################
10
30
 
31
+ void FrameWork::Text::ReFormatString(const char* font, int size, const char* str, ...)
32
+
33
+ {
34
+
35
+ //フォントサイズ変更
36
+
11
- if (str != NULL)
37
+ if (fontSize != size)
12
38
 
13
39
  {
14
40
 
15
- //マルチバイト文字をワイド文字変換
41
+ fontSize = size;
16
42
 
17
- std::vector<wchar_t> wcharText(0);
18
-
19
- std::vector<char> charText(0);
20
-
21
- va_list args = NULL;
22
-
23
- va_start(args, str);
24
-
25
- charText.clear();
26
-
27
- charText.resize(strlen(str) + 1);
28
-
29
- vsprintf_s(charText.data(), charText.size(), str, args);
30
-
31
- va_end(args);
32
-
33
-
34
-
35
- wcharText = getWchar_t(charText);
36
-
37
- *fixationText = getTexture(wcharText); //スチャ生成
43
+ FT_Set_Pixel_Sizes(face, 0, fontSize); //セルサイズ指定
38
44
 
39
45
  }
40
46
 
41
47
 
42
48
 
49
+ if ( (fontName != std::string(font)) && (font != NULL) )
50
+
51
+ {
52
+
53
+ fontName = std::string(font); //フォント変更
54
+
55
+ std::cout << fontName << std::endl;
56
+
57
+ //フェイス作成
58
+
59
+ if (FT_New_Face(ft, fontName.c_str(), 0, &face) != 0)
60
+
61
+ {
62
+
63
+ std::cerr << "FreeType フォントを読み込めません。" << std::endl;
64
+
65
+ assert(0);
66
+
67
+ }
68
+
69
+
70
+
71
+ FT_Set_Pixel_Sizes(face, 0, fontSize); //ピクセルサイズを指定
72
+
73
+
74
+
75
+
76
+
77
+ fixationText->clear();
78
+
79
+ *fixationText = getTexture(str);
80
+
81
+
82
+
83
+ }
84
+
85
+ }
86
+
43
87
  ```
88
+
89
+
90
+
91
+ ```cpp
92
+
93
+ std::vector<Character> getTexture(const char* str,...)
94
+
95
+ {
96
+
97
+ ///テクスチャを生成
98
+
99
+ }
100
+
101
+ ```

1

文章を修正

2021/06/24 06:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 提示コードですがstr変数が可変長引数です。以前 (const char *str ,..) という引数をとる関数getWchar_t();関数を作成したのですが引数の%d,a等上手く数値かされておらず関数化出来ないではと思い以下ようにva_listのコードは関数化しないで毎回コードを置いてるのですがこの動作は関数化出来ないのでしょうか?
1
+ 提示コードですがstr変数が可変長引数です。以前 (const char *str ,..) という引数をとる関数getWchar_t();関数を作成したのですが引数のvoid f("%d",a)の処理で上手く数値かされておらず関数化出来ないではと思い以下ようにva_listのコードは関数化しないで毎回コードを置いてるのですがこの動作は関数化出来ないのでしょうか?
2
2
 
3
3
 
4
4