C++の書式文字列クラスの機能

C++ではフォーマット関数は標準で用意されていませんが、他のライブラリを使用するか、自作して同様の機能を使用できます。一般的な方法は次のとおりです。

  1. CStringStreamを利用する: CStringStreamオブジェクトを利用すれば、いろいろな型データを文字列に変換したり、文字列の連結で書式付き出力を実現することができる。
#include <iostream>
#include <sstream>

int main() {
    int num = 10;
    std::string str = "Hello";
    
    std::stringstream ss;
    ss << str << " " << num;
    std::string result = ss.str();
    
    std::cout << result << std::endl;  // 输出:Hello 10
    
    return 0;
}
  1. boost::format
#include <iostream>
#include <boost/format.hpp>

int main() {
    int num = 10;
    std::string str = "Hello";
    
    std::string result = boost::str(boost::format("%1% %2%") % str % num);
    
    std::cout << result << std::endl;  // 输出:Hello 10
    
    return 0;
}
  1. 特定のニーズに応じて、さまざまな種類のパラメーターを受け取り、指定されたフォーマットに従って出力を生成する独自のカスタム関数を定義します。
#include <iostream>
#include <string>
#include <sstream>

template<typename... Args>
std::string format(const std::string& fmt, Args... args) {
    std::ostringstream oss;
    int dummy[] = {0, ((void)(oss << args), 0)...};
    (void)dummy;  // 防止编译器警告“未使用的变量”
    return oss.str();
}

int main() {
    int num = 10;
    std::string str = "Hello";
    
    std::string result = format("%s %d", str.c_str(), num);
    
    std::cout << result << std::endl;  // 输出:Hello 10
    
    return 0;
}

特定の使用方法は、個人の好みやプロジェクトの必要性によって異なりますが、いずれの方法もフォーマットされた出力を実現するために使用できます。

bannerAds