char* 类型的实参与LPCTSTR类型的形参 不兼容
boolend=false;charp[100];introw=0,column=0;fstreaminfile("book.txt",ios::in);if(!infi...
bool end=false;
char p[100];
int row=0,column=0;
fstream infile("book.txt",ios::in);
if(!infile)
{
MessageBox(L"no stored message!");
return ;
}
while(1)
{
m_list.InsertItem(m_list.GetItemCount(),NULL,NULL);
for(column=0;column<3;column++)
{
if(!(infile>>p))
{
end=true;
break;
}
m_list.SetItemText(row,column,p);
}
row++;
if(end==true)
{
break;
}
}
m_list.SetItemText(row,column,p);报错了 我用的是vs2010 展开
char p[100];
int row=0,column=0;
fstream infile("book.txt",ios::in);
if(!infile)
{
MessageBox(L"no stored message!");
return ;
}
while(1)
{
m_list.InsertItem(m_list.GetItemCount(),NULL,NULL);
for(column=0;column<3;column++)
{
if(!(infile>>p))
{
end=true;
break;
}
m_list.SetItemText(row,column,p);
}
row++;
if(end==true)
{
break;
}
}
m_list.SetItemText(row,column,p);报错了 我用的是vs2010 展开
3个回答
展开全部
有支持以Unicode编码读取文件的wfstream类,在写MFC,最好不要用fstream这样的类来操作文件,转换数据很麻烦,MFC有自己的File类读取文件。
LPCTSTR 是 Const TCHAR* ,TCHAR 是一个宏,可以是char,也可以是wchar_t,看编译选项的。为了你的代码能够适用这两种情况,你应该注意。
LPCTSTR 是 Const TCHAR* ,TCHAR 是一个宏,可以是char,也可以是wchar_t,看编译选项的。为了你的代码能够适用这两种情况,你应该注意。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
LPCTSTR使用的unicode编码,和char*不能直接赋值,要转换一下,使用这个函数MultiByteToWideChar转换就行了,vs默认的是unicode
追问
怎么写啊? 我是菜鸟啊。。。。。
追答
帮你上网搜了个答案还可以
我们只需要将MultiByteToWideChar()的第四个形参设为-1,即可返回所需的短字符数组空间的个数:
DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, sText, -1, NULL, 0);
接下来,我们只需要分配响应的数组空间:
wchar_t *pwText;
pwText = new wchar_t[dwNum];
if(!pwText)
{
delete []pwText;
}
接着,我们就可以着手进行转换了.在这里以转换成ASCII码做为例子:
MultiByteToWideChar (CP_ACP, 0, psText, -1, sText, dwSize);
最后,使用完毕当然要记得释放占用的内存:
delete []psText;
这是别人的电脑,没安装msdn哈哈,你照着做就行了,我以前实现成功过,还不行我就帮你写
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询