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

質問編集履歴

2

文章を修正

2021/06/24 06:58

投稿

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

1

文章を修正

2021/06/24 06:58

投稿

退会済みユーザー
title CHANGED
File without changes
body 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
  ```cpp