我的c ++应用程序无法正确写入文件数据

时间:2013-01-15 09:43:51

标签: c++ visual-c++ file-io unicode mfc

我正在开发一个C ++ MFC应用程序(使用visual studio 2010)

我已编写此代码用于在文件上存储数据(代码在按钮单击事件中)

wfstream myfile;
myfile.open("ttt.txt");
if(!myfile)
    MessageBox(L"Problem");
else
{
    myfile <<"arash";
    myfile << ";program";
    myfile << ";test";
    myfile << ";a";
    MessageBox(L"OK");
myfile.close();

}

但是输出文件是:

arash;program;test;aحححححححححح

我不知道حححححححححح来自哪里?!!!

我也试过

myfile << _T("arash");
myfile << _T(";program");
myfile << _T(";test");
myfile << _T(";a");

但它没有改变

我能做什么?

由于

2 个答案:

答案 0 :(得分:1)

您必须为文件输出提供宽字符串,因为它是一个宽字符文件:

myfile << L"arash";
myfile << L";program";
myfile << L";test";
myfile << L";a";

_T宏不起作用的原因可能是您没有定义_UNICODE

答案 1 :(得分:0)

除了提供带有L"something"的宽字符文字外,由于这是一个宽字符流,你必须这样做,因此该文件可能已包含以前操作的垃圾数据。

听起来你想在写入之前截断文件(删除所有现有数据)。你可以用

做到这一点
myfile.open("ttt.txt", ios_base::in | ios_base::out | ios_base::trunc);