可変のsprintf_s用引数を渡し、関数内で展開し表示させたいです。
イメージとしては以下です。
cpp
1#include <iostream> 2 3using namespace std; 4 5void out_func(std::string s, std::string a...) { 6 char word[512]{}; 7 sprintf_s(word, s.c_str(), a...); //error 8 cout << word << endl; 9} 10 11int main() { 12 out_func("out sentence1 = %s", "one"); 13 out_func("out sentence2 = %s %s", "one", "two"); 14 out_func("out sentence3 = %s %s %s", "one", "two", "three"); 15}
再帰によるパラメータパックの展開やinitializer_listの使用方法も読んだのですが、うまくsprintf_sに対応させることが難しかったです。
良い方法がありましたらご教授いただければ助かります。
sprintf_s と言うことは、Visual C++ (Visual Studio)で良いということでしょうか。
はい、Visual Studioです。
あくまでout_func関数内ではstd::string を使いたいのでしょうか。"one", "two"などの引数部分に関しても。
const char*でもよいです。sprintf_sに渡せる形で展開したい、というのが希望です。
va_startとvsprintf_sを使う形ではだめということですか?
vsprintf_sを使うことになる、と言う点では同じになりますので、既についたSHOMIさんのご回答をご覧いただくのが良いかと。
いえ、だめではないです。動作を確認していて返信が遅れています。すみません。
回答2件
あなたの回答
tips
プレビュー