ホームページ  >  記事  >  バックエンド開発  >  C クラスは printf/sprintf を使用して変数引数をどのように処理できますか?

C クラスは printf/sprintf を使用して変数引数をどのように処理できますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-26 03:34:13156ブラウズ

How Can a C   Class Handle Variable Arguments with printf/sprintf?

変数引数を printf/sprintf に渡す

質問:

クラスはどのように定義できますか可変数の引数を受け取り、それらを次のようにフォーマットするメソッドprintf?

例:

「error」メソッドを持つクラスを考えてみましょう:

class MyClass
{
public:
    void Error(const char* format, ...);
};

Error メソッドは変数引数を取得する必要があります。 printf/sprintf を使用してフォーマットし、いくつかの処理を実行します。 action.

答え:

これを実現するには、vfprintf を使用します:

void Error(const char* format, ...)
{
    va_list argptr;
    va_start(argptr, format);
    vfprintf(stderr, format, argptr);
    va_end(argptr);
}

これにより、フォーマットされたテキストが標準エラー出力に出力されます。出力を文字列に保存するには、代わりに vsnprintf を使用します。 vsprintf はバッファ オーバーフローを引き起こす可能性があるため、使用しないでください。

以上がC クラスは printf/sprintf を使用して変数引数をどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。