首頁 >後端開發 >C++ >如何在 C 中正確使用 `printf` 和 `std::string` ?

如何在 C 中正確使用 `printf` 和 `std::string` ?

Linda Hamilton
Linda Hamilton原創
2024-12-20 16:49:11915瀏覽

How Can I Correctly Use `printf` with `std::string` in C  ?

printf 與std::string 的錯誤處理

嘗試使用printf 與std::string 時,可能會因類型而發生錯誤預期的C 風格字串與提供的std::string 不符。

這是因為 printf 需要一個以 null 結尾的字串C 風格的字串,而 std::string 不提供這樣的直接表示。要解決此問題,請考慮以下解決方案:

使用std::cout

由於std::string 支援運算子重載以插入流,因此最簡單的解決方案是使用std::cout 進行列印:

std::cout << "Follow this command: " << myString;

提取 C風格String

如果您特別需要C 風格字串,請使用std::string:

printf("Follow this command: %s", myString.c_str());

可變參數模板< 的c_str( ) 方法🎜>

對於printf 的型別安全替代方案,請考慮使用可變參數模板,如中提供的範例所示答案:

// Variadic function
template<typename T, typename... Ts>
void myPrintf(const char* format, T firstArg, Ts... otherArgs) {
  // Handle variable arguments
  // ...
}

// Usage
myPrintf("Follow this command: %s", myString);

其他注意事項

請注意,printf 不是類型安全的,並且依賴您提供準確的類型信息。如果您提供的類型資訊不正確,則函數可能會表現出未定義的行為。

隨著 C 23 標準的出現,std::print 已成為利用 std::format 進行直接輸出的一種方式,結合了兩者的優點printf 和 std::cout。

以上是如何在 C 中正確使用 `printf` 和 `std::string` ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn