中文string字符串寫入文件C++實現

由於中文在計算機中的存儲是由兩位字節, unicode編碼中的utf-16實現,所以無法使用常規的字符方式寫入文件。

可以採用將string轉換爲wstring,這樣每個漢字存儲時使用的是一個字節,就可以循環遍歷每個字節寫入文件,但在筆者的幾次嘗試下,這種方式輸出暫未找到解決文件亂碼的方法。

這裏採用的是當某個字節檢測到爲漢字時,將其緊隨的字節和一個 ‘\0’ 標誌,一併存到char型數組後輸出到文件,從而實現中文寫入文件的C++方式的實現。

ps:java有處理中文的包

void write()
{
	//string str2 = wstringtoString(str);
	//str2 = "chinaisagreatcountry";
	str2 = "大數據平臺";
	FILE *fp1;
	if ((fp1 = fopen("vaguenessWords.txt", "a")) == NULL)
		cout << "open error" << endl;
	else
	{
		for (int i = 0; i < str2.size(); i++)
		{
			char s[3];
			if (str2[i] & 0x80)//如果當前節點是漢字
			{
				//一個漢字就是一個字符串,佔兩個字節,每個字結尾有'\0'標誌,佔一個字節
				s[0] = str2[i]; s[1] = str2[++i]; s[2] = '\0';
				printf("%s", s);
				fprintf(fp1, "%s", s);//寫入文件
			}
			else
			{
				fprintf(fp1, "%c", str2[i]);
			}
		}
		fclose(fp1);
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章