C++ Builder 參考手冊 ? System::Sysutils ? WideFormat
格式化輸出到 WideString 類型的字符串
頭文件:#include <System.SysUtils.hpp>
命名空間:System::Sysutils
函數(shù)原型:
System::WideString __fastcall WideFormat(
const System::WideString Format,
const System::TVarRec *Args,
const int Args_High);
System::WideString __fastcall WideFormat(
const System::WideString Format,
const System::TVarRec *Args,
const int Args_High,
const TFormatSettings &AFormatSettings);
參數(shù):
- Format:格式字符串炼幔;
- Args:要輸出的數(shù)據(jù)纤怒;
- Args_High:數(shù)據(jù)的個(gè)數(shù)減1犯眠;
- AFormatSettings:地區(qū)格式精钮;
返回值:
- 按照參數(shù) fmt 或 Format 的格式生成字符串,函數(shù)返回生成的字符串:
格式和 <cstdio> 里面的 printf / sprintf 類似离陶,不完全一樣斋配,詳見函數(shù) Format 的格式描述和表格夸盟;
如果格式解析錯(cuò)誤,會(huì)拋出 EConvertError 異常骤公,而不是像 printf / sprintf 那樣得到錯(cuò)誤的結(jié)果抚官;
和 printf / sprintf 另一個(gè)不同:Format 函數(shù)使用地區(qū)格式,而 printf / sprintf 不使用地區(qū)格式阶捆; - 參數(shù) Args, Args_High 可以使用 ARRAYOFCONST 宏凌节,請參考本文后面的例子;
- 地區(qū)格式的例子請參考 FloatToStrF
如果有 AFormatSettings 參數(shù)趁猴,使用這個(gè)參數(shù)的格式刊咳;
如果沒有 AFormatSettings 參數(shù),使用 全局變量 System::Sysutils::FormatSettings 作為地區(qū)格式儡司; - 函數(shù)內(nèi)部是通過調(diào)用函數(shù) WideFmtStr 實(shí)現(xiàn)的娱挨,所以 WideFormat 和 WideFmtStr 函數(shù)執(zhí)行結(jié)果相同,區(qū)別是通過參數(shù)返回輸出結(jié)果捕犬,或通過函數(shù)返回值返回結(jié)果跷坝;
- WideFormat 和 Format 的區(qū)別:參數(shù)和返回值類型不同:
? Format:參數(shù)和返回值是 UnicodeString 類型的;
? WideFormat:參數(shù)和返回值是 WideString 類型的碉碉; - 沒有 AFormatSettings 參數(shù)的函數(shù)不是線程安全的柴钻,因?yàn)槭褂昧巳肿兞孔鳛榈貐^(qū)格式;帶有 AFormatSettings 參數(shù)的函數(shù)是線程安全的垢粮。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i = 123;
double x = 4.5678;
UnicodeString s = WideFormat(L"i=%d, x=%.3f", ARRAYOFCONST((i, x))); // 默認(rèn)格式:當(dāng)前地區(qū) (中國)
Memo1->Lines->Add(s); // i=123, x=4.568
TFormatSettings fsFrench = TFormatSettings::Create(L"fr_FR"); // 法國格式
s = WideFormat(L"i=%d, x=%.3f", ARRAYOFCONST((i, x)), fsFrench);
Memo1->Lines->Add(s); // i=123, x=4.568
TFormatSettings fsChinese = TFormatSettings::Create(L"zh_CN"); // 中國格式
s = WideFormat(L"i=%d, x=%.3f", ARRAYOFCONST((i, x)), fsChinese);
Memo1->Lines->Add(s); // i=123, x=4.568
}
運(yùn)行結(jié)果:
相關(guān):
- System::Sysutils::Format
- System::Sysutils::FormatBuf
- System::Sysutils::FormatCurr
- System::Sysutils::FormatDateTime
- System::Sysutils::FormatFloat
- System::Sysutils::FmtStr
- System::Sysutils::FmtLoadStr
- System::Sysutils::StrFmt
- System::Sysutils::StrLFmt
- 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 ? WideFormat