stl 輸出unicode到檔案中

2021-04-21 01:04:27 字數 1517 閱讀 1584

在vs2008中,如果專案設定了unicode字符集,把中文輸出到檔案中經常會遇到錯誤。

在mfc專案中,可以使用以下語句來實現unicode到多位元組字元的轉換:

uses_conversion;

cstring strlog = _t("我愛大家");

const

char*   cplog   =   (const

char*)w2a(strlog);

cfile myfile;

myfile.open(_t("test.txt"),cfile::modecreate|cfile::modewrite);

myfile.write(cplog,strlen(cplog));

myfile.close();

其實stl也提供了unicode字元的處理,這裡的unicode只是兩個位元組的字元(即unsigned short)。unicode對應的字串處理比ansi麻煩,相關的類基本前面都帶有'w'。如std::wstring,std::wofstream。

下面貼兩段**來實現輸出unicode到檔案中。

1、cstring mfcstr = _t("大家.txt");

std::wstring   str   =   l"大家"; 

std::wofstream   ofile(mfcstr.getbuffer(mfcstr.getlength()));

ofile.imbue(std::locale("chs"));   設定輸出流的imbue屬性很重要

ofile.write(str.c_str(),str.length());

ofile.write(l"/r/n",2);

ofile.write(mfcstr.getbuffer(mfcstr.getlength()),mfcstr.getlength());

ofile<"我愛她"

要注意第四句,如果沒有設定第四句,是不能把中文輸出到檔案中的。

2、設定全域性的locale,輸出中文到檔案會出錯,可能是因為沒有設定好本地化的東西。

locale &loc=locale::global(locale(locale(),"",lc_ctype));

ofstream ofs("ofs.txt");

wofstream wofs(l"wofs測試.txt");

locale::global(loc);

ofs<<"test測試"

<<1234<<1234<

在讀取這些檔案時,首先要設定好locale,然後再開啟檔案來讀取資料。如:

std::wstring   str   =   l"大家.txt"; 

wstring strline;

locale loc("chs"); 

wifstream in;

in.imbue(loc);   //關鍵

in.open(str.c_str());

if (!in.is_open())

while (in>>strline)

in.close();

python檔案輸出unicode轉碼

有時候利用python爬蟲獲得的檔案是unicode的編碼格式。輸出大概是 類似這種。根據不同的編碼,讀取檔案輸出的時候,加上對應的解碼方式就行了。如 with open mingyan.json r encoding unicode escape as file message file.read...

從STL檔案到網格拓撲

stl檔案是什麼 stl檔案是網格檔案的一種格式,分為二進位制和文字兩種型別。具體來講,它定義了一群三角麵片,比如下面是乙個文字的stl示例 solid geometryplusplus facet normal 0.902325 0.430279 0.0258872 outer loop vert...

SpringBoot輸出日誌到檔案

2.2 logging.file.path 2.3 注意 3 使用xml擴充套件 4 logging裡的預設值 5 效果 指定日誌檔案的位置。使用相對路徑,就會在專案根目錄下生成乙個lab.log檔案 logging file name lab.log 在專案根目錄下生成乙個logs資料夾,logs...