100分求vc的WriteFile函式輸入檔案的簡單問題

2022-10-31 03:15:12 字數 2177 閱讀 6033

1樓:匿名使用者

因為你沒有進行字元的轉換,我們需要將buf進行轉換。這就要用到了widechartomultibyte.如何用呢?

首先我的方法比較笨,可以這麼用的:

char* pchbuffer = new char[dwlen+1];

widechartomultibyte(cp_acp, null, pbuffer, -1, pchbuffer, dwlen+1, null, false );

delete pchbuffer;

此時注意,我在writefile中用了dwlen+1。結果就是在檔案的末尾出現了亂碼,正好多一個亂碼出來。所以writefile中nnumberofbytestowrite是寫的字串的數目,是不包括』\0』的。

此時注意,我在writefile中用了dwlen+1。結果就是在檔案的末尾出現了亂碼,正好多一個亂碼出來。所以writefile中nnumberofbytestowrite是寫的字串的數目,是不包括』\0』的。

這個方法笨,是因為我們的函式可以縮減為兩個引數。是因為如下這麼寫時,dwlen是所要轉換的字串的個數,此時轉換的字串是包括』\0』的。

dword dwlen = widechartomultibyte(cp_acp, null, pbuffer, -1, null, null, null, false );

2樓:南大梧桐

最近在使用writefile函式時發現,vc2008中unicode字符集下處理中文亂碼的一些解決方法,歸納如下

1. 寫入的時候採用多位元組char型別

handle hfile;

dword nbytes;

hfile=createfile(_t("test.txt"),generic_write,file_share_write,null,create_always,0,null);

char msg="我是我的我";

if(hfile!=invalid_handle_value)

2. 直接寫入unicode的頭位元組

handle hfile;

dword nbytes;

hfile=createfile(_t("test.out"),generic_write,file_share_write,null,create_always,0,null);

wchar msg=l"我是我的我";

if(hfile!=invalid_handle_value)

3. 使用widechartomultibyte轉換成多位元組

(省略)

4. 使用wcstombs轉換成多位元組,需要引用wchar.h和locale.h

handle hfile;

dword nbytes;

hfile=createfile(_t("test.out"),generic_write,file_share_write,null,create_always,0,null);

wchar msg=l"我是我的我";

if(hfile!=invalid_handle_value)

//*********以下為讀入***********************//

hfile=createfile(_t("test.txt"),generic_read,file_share_read,null,open_always,0,null);

if(hfile!=invalid_handle_value)

;bool bresult;

if(nbytes!=0)

closehandle(hfile);}

3樓:匿名使用者

用#include 不是更好嗎?

file * f = fopen(("\\my documents\\one.txt", "w");

fpritnf(f, "張三李四");

fclose(f);

就可以了,多簡單啊!

4樓:匿名使用者

你的 buf是一個字串指標

直接寫入肯定是亂碼

換char型陣列 就ok

求日語翻譯100分

窗邊優和窗邊愛的同時音效資料夾裡的全都是擬聲詞 那些片假名的 我就不煩了,因為具體不知道是什麼時候發出的。窗邊優單獨音效裡的擬聲詞我也不翻了,就把語句翻出來吧im 這是im喲 見 啊,找到了 啊,您回來了 少 唉?電池要沒電了 哎呀,發生系統錯誤了 哎呀呀?哎呀!慌張 嗚呼呼 辛苦您了,晚安 唉?這...

100分求日版NDSI的WIFI設定

馬里奧賽車?基本上是wep密碼錯誤 不加密不行 我也試過 不知道為什麼 你用密碼生成器生密碼 一般可以生4組 8組的 選一組設定到路由 然後把這一組也打到ds裡去 ip三行分別是 本機ip 掩碼 閘道器 如果是最經典常見的192.168.1.xx 那就把路由器的dhcp開啟 ds上全部自動就可以了 ...

急求結婚吉日 100分懸賞

男 1982年農曆9月16日生 女 1982年農曆9月25日生 訂於2009年陽曆2月14日 情人節 農曆1月20日,吉嗎?2009年2月份恭候您二位結婚的黃道吉日是 避開您二位生肖的衝日後可任選 2009年02月03日 星期二 一月初九 衝雞 2009年02月06日 星期五 一月12日 衝鼠 20...