_T("D:\\122.txt")【字符集问题】或【类型转换问题】

项目->属性->常规->字符集->使用多字节字符集!时用_T("Filename"),

貌似不是字符集的问题!

 1、使用替换,,,后均可以运行通过。

CString str;
str = pBuf;
MessageBox(str);

2、若不替换则仅仅当使用

使用多字节字符集!时用_T("Filename"),方可!而使用 Unicode 字符和L"Filename"不行!


初始代码:

void CweFileView::OnFileWritefile()
{
    // TODO:  在此添加命令处理程序代码
    CFile file(_T("D:\\122.txt"), CFile::modeCreate | CFile::modeWrite);
    file.Write("IOIOIOPP", strlen("IOIOIOPP"));
    file.Close();
}

void CweFileView::OnFileReadfile()
{
    // TODO:  在此添加命令处理程序代码
    CFile file(_T("D:\\122.txt"),CFile::modeRead);
    char *pBuf;
    DWORD dwFileLen;
    dwFileLen=file.GetLength();
    pBuf=new char[dwFileLen+1];
    pBuf[dwFileLen]=0;
    file.Read(pBuf,dwFileLen);
    file.Close();
    MessageBox(pBuf);
}

的错误为:error C2664: “int CWnd::MessageBoxW(LPCTSTR,LPCTSTR,UINT)”: 无法将参数 1 从“char *”转换为“LPCTSTR”

若,不加_T("Filename")或L"Filename"会报错;

没有与参数列表匹配的构造函数实例CFile::CFile






若改为使用 Unicode 字符:

则应使用L

CFile file(L"D:\\122.txt", CFile::modeCreate | CFile::modeWrite);

CFile file(L"D:\\122.txt",CFile::modeRead);

但会出现错误为:error C2664: “int CWnd::MessageBoxW(LPCTSTR,LPCTSTR,UINT)”: 无法将参数 1 从“char *”转换为“LPCTSTR”

-------------------------------------------

-------------------

此时修改代码,加入

CString str;
str=pBuf;
MessageBox(str);

转换一下(from超):

原代码也同样修改:ok了!

CString str;
str = pBuf;
MessageBox(str);

    CString str;
    str = pBuf;
    MessageBox(str);    

时间: 2024-12-30 20:17:26

_T("D:\\122.txt")【字符集问题】或【类型转换问题】的相关文章

unicode字符集下CStdioFile无法写入中文的解决方案

CStdioFile file; file.Open(_T("c:\\a.txt"),CFile::modeCreate |CFile::modeReadWrite); file.WriteString(_T("hello world ,第一句话")); file.Flush(); file.Close(); 默认状态下,中文无法显示. _tsetlocale( LC_CTYPE, _T("chs"));//设置语言环境为中文.如果主机安装的是中

miaov-数据类型转换

JS数据类型:number数字(NaN).string字符串.boolean布尔值.函数类型.object对象(obj.[].{}.null).undefined未定义 typeof 用来判断基本数据类型,instanceof可以判断引用数据类型 显示/强制类型转换( Number().parseInt().parseFloat() ) Number() =>字符串变数值 NaN => json.函数.未定义进行运算(var a).数组里有一堆内容 null.''.[] =>0 true

逐行读写字符串数组到文本txt文件

C语言方式 将字符串数组写入到txt文件中 有五个文件名存储在字符串数组中,欲将其逐行写入到txt文件中保存到磁盘上. 利用fprintf对文件进行格式化输出 void Filewrite() { FILE *fp; char * name[] = {"filen1", "file2", "file3", "file4", "file4"}; fp = fopen("E://test.txt&qu

MFC-按行读取TXT数据

TXT中数据格式如下: 1 23 4 0 4 10 -- 要实现的功能是:定义一个函数,每次调用时从TXT文档中读一个整数 ,赋值给变量.同时,文件位置向下移动一行,以便下次调用时读取下一行的数据. MFC主要读写文件的类是CFile,CStdioFile类是派生自CFile类的,主要增加了一个按行的方式读取/写入文件每行字符串的功能[读写TXT文件,写入和输出必须统一格式].所以实现按行读取字符串用CStdioFile类. 代码: void CMFCdemoDlg::getPersonCnt(

VS MFC CFileDialog类 打开文件对话框和另存为对话框

1 explicit CFileDialog( 2 BOOL bOpenFileDialog, 指定的参数创建哪种类型的对话框. 设置到构造 文件已打开 对话框的 TRUE. 设置到构造 保存文件 对话框的 FALSE. 3 LPCTSTR lpszDefExt = NULL, 默认的文件扩展名. 如果用户在文件名框中不包括包含在用户的计算机上的关联) 的已知扩展 (一,lpszDefExt 指定的扩展自动追加到文件名. 如果此参数是 NULL,扩展不是追加. 4 LPCTSTR lpszFil

CString转换成int CString类相应函数

CString 型转化成 int 型 把 CString 类型的数据转化成整数类型最简单的方法就是使用标准的字符串到整数转换例程. 虽然通常你怀疑使用_atoi()函数是一个好的选择,它也很少会是一个正确的选择.如果你准备使用 Unicode 字符,你应该用_ttoi(),它在 ANSI 编码系统中被编译成_atoi(),而在 Unicode 编码系统中编译成_wtoi().你也可以考虑使用_tcstoul()或者_tcstol(),它们都能把字符串转化成任意进制的长整数(如二进制.八进制.十进

CString 操作指南

原著:Joseph M. Newcomer 翻译:littleloach 原文出处:codeproject:CString Management 通过阅读本文你可以学习如何有效地使用 CString. CString 是一种很有用的数据类型.它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多.不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习.这篇文章就来讨论这些技巧. 使用CString可以让你对字符串的操作更加直截了

MFC打开文件的方法

已经看懂的方法: CFileDialog类封装了Windows常用的文件对话框.常用的文件对话框提供了一种简单的与Windows标准相一致的文件打开和文件存盘对话框功能. CFileDialog的语法: CFileDialog(BOOL      bOpenFileDialog, LPCTSTR     lpszDefExt=NULL, LPCTSTR      lpszFileName=NULL, DWORD     dwFlags     =     OFN_HIDEREADONLY    

剖析ifstream打开含中文路径名文件失败的原因

http://blog.csdn.net/yukin_xue/article/details/7543423 最近写程序的时候遇到了使用ifstream打开含中文路径文件时失败的问题,在网上翻了一下,发现这是一个普遍遇到的问题,在很多人的博文中也都给出了一些解决技巧,但大多是转载的东西,很少对这个问题引发的原因有一个清晰.全面的解释.因此,我觉得有必要对该问题引发的原因作一个详细的剖析,希望对遇到同样问题的朋友们能有所帮助. 首先,用一个简单的例子来重现一下我所遇到的问题: (1)在VS2008