sprintf を使用してフォーマットされた std::string をファイル ストリームに埋め込む
モダン C は、sprintf でフォーマットされた std::string のファイルへの統合を合理化します。ストリーム。新しい手法では、従来のメソッドに比べて大幅な改善が行われています。
C 20
C 20 では std::format が導入され、Python のような置換フィールドを使用した簡単な文字列フォーマットが可能になります。
#include <iostream> #include <format> int main() { std::cout << std::format("Hello {}!\n", "world"); }
C 11
C 11 の std::snprintf は、安全でユーザーフレンドリーなオプションを提供します。
#include <memory> #include <string> #include <stdexcept> template<typename ... Args> std::string string_format(const std::string& format, Args ... args) { int size_s = std::snprintf(nullptr, 0, format.c_str(), args ...) + 1; if (size_s <= 0) { throw std::runtime_error("Error during formatting."); } size_t size = static_cast<size_t>(size_s); std::unique_ptr<char[]> buf(new char[size]); std::snprintf(buf.get(), size, format.c_str(), args ...); return std::string(buf.get(), buf.get() + size - 1); }
注意事项
追加オプション
結論
最新の C 技術は、フォーマットされた std::string をファイル ストリームに組み込むための古いアプローチを大幅に改善しています。 C 20 の std::format を選択すると、最も効率的で安全なソリューションが提供されます。 C 11 の std::snprintf は下位互換性のための確実な代替手段を提供し、{fmt} のような外部ライブラリは機能をさらに強化できます。
以上がフォーマットされた std::string を最新の C のファイル ストリームに効率的に埋め込むにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。