C++ Builder 參考手冊 ? System::Sysutils ? StrFmt
格式化數據到字符串
頭文件:#include <System.SysUtils.hpp>
命名空間:System::Sysutils
函數原型:
char * __fastcall StrFmt(char * Buffer, char * Format, const System::TVarRec *Args, const int Args_High);
char * __fastcall StrFmt(char * Buffer, char * Format, const System::TVarRec *Args, const int Args_High, const TFormatSettings &AFormatSettings);
System::WideChar * __fastcall StrFmt(System::WideChar * Buffer, System::WideChar * Format, const System::TVarRec *Args, const int Args_High);
System::WideChar * __fastcall StrFmt(System::WideChar * Buffer, System::WideChar * Format, const System::TVarRec *Args, const int Args_High, const TFormatSettings &AFormatSettings);
參數:
- Buffer:用于返回生成的字符串;
- Format:輸出數據的格式;
- Args:要輸出的數據數組;
- Args_High:數據的個數減1;
- AFormatSettings:地區格式;
返回值:
- 按照 Format 參數的格式輸出參數 Args 數據到 Buffer 字符串,函數直接返回 Buffer;
- 參數 Buffer 需要有足夠的空間儲存生成的字符串,函數不檢查是否預先分配了足夠的空間;
- 這個函數的參數及生成的字符串規則和 Format 函數相同,詳細規則請參考 Format 函數。
- 沒有 AFormatSettings 參數的函數不是線程安全的,因為使用了全局變量作為地區格式;帶有 AFormatSettings 參數的函數是線程安全的,請參考 FormatSettings 和 TFormatSettings;
- 這個函數內部通過調用 FormatBuf 實現的,所以這個函數和 FormatBuf 函數功能相同,只是參數不同;
例子:測試使用 Format 和 StrFmt 輸出一個整數和一個浮點數值
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i = 123;
double x = 4.5678;
Memo1->Lines->Add(Sysutils::Format(L"i=%d, x=%.3f", i, x));
System::TVarRec a[] = {i,x};
wchar_t fmt[] = L"i=%d, x=%.3f";
wchar_t s[1024];
Sysutils::StrFmt(s, fmt, a, 1);
Memo1->Lines->Add(s); // i=123, x=4.568
}
運行結果:
運行結果
相關:
- System::Sysutils::Format
- System::Sysutils::FormatBuf
- System::Sysutils::FormatCurr
- System::Sysutils::FormatDateTime
- System::Sysutils::FormatFloat
- System::Sysutils::FormatSettings
- System::Sysutils::FmtStr
- System::Sysutils::FmtLoadStr
- System::Sysutils::StrFmt
- System::Sysutils::StrLFmt
- System::Sysutils::TFormatSettings
- System::Sysutils::WideFormat
- System::Sysutils::WideFormatBuf
- System::Sysutils::WideFmtStr
- System::Sysutils
- std::printf, std::_tprintf, std::wprintf
- std::sprintf, std::_stprintf, std::swprintf
- std::vprintf, std::_vtprintf, std::vwprintf
- std::vsprintf, std::_vstprintf, std::vswprintf
- std::snprintf, std::_sntprintf, std::snwprintf
- std::vsnprintf, std::_vsntprintf, std::vsnwprintf
- <cstdio>
C++ Builder 參考手冊 ? System::Sysutils ? StrFmt