[英]Convert a floating point number to a localized string in C++
如何將浮點數轉換為 C++ 中的本地化字符串? 例如,假設我有一個浮點數 1.2,那么在某些語言環境中它應該轉換為 1.2,而在其他語言環境中則為 1,2。
使用空字符串參數構造std::locale
object。 這將使用為系統配置的語言環境:
std::locale cpploc{""};
我們可以將這個 object 灌輸到一個字符 stream 中:
std::cout.imbue(cpploc);
現在,output 將具有特定於語言環境的小數點:
std::cout << 1.2; // either 1.2 or 1,2
本地化 C++ 程序通常應該首先執行此操作:
std::locale loc("");
std::locale::global(loc);
然后,所有格式化都應根據在該點之后構建的所有流中的用戶首選語言環境進行,但不能在 cin、cout 和 cerr 中進行(這些已經構建了 C 語言環境)。 這些流需要單獨注入用戶語言環境。
std.::cout.imbue(loc); // etc
設置全局語言環境不僅會更改格式,還會更改 is... 函數中的字符分類,可能還會更改其他一些內容。
除了Eeronika 的回答之外,如果您有興趣將其簡單地轉換為字符串,您可以選擇std::stringstream
:
#include <sstream>
#include <locale>
#include <string>
//...
std::locale cpploc{""};
std::stringstream ss;
ss.imbue(cpploc);
ss << 1.2;
std::string asString = ss.str();
更多關於std::locale
的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.