读书人

求大仙帮忙 vs2005 error2664,该如何处

发布时间: 2013-01-01 14:04:18 作者: rapoo

求大仙帮忙 vs2005 error2664
源代码:
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <Windows.h>
#include <atlstr.h>
#include <atlconv.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
CString strName;

CString strTemp;
int nAge;
strName = "zhansan";
nAge = 12;

CString str=_T("TestStr");
USES_CONVERSION;
LPWSTR pwStr=new wchar_t[str.GetLength()+1];
wcscpy(pwStr,T2W((LPCTSTR)str));

::WritePrivateProfileString("StudentInof","Name",strName,"d:\\stud.ini");

strTemp.Format("%d",nAge);
::WritePrivateProfileString("StudentInof","Name",strTemp,"d:\\stud.ini");

CString strStudName;
int nStuAge;
::GetPrivateProfileString("StudentInfo","Name","default",strStudName.GetBuffer(MAX_PATH),MAX_PATH,"d:\\stud.ini");
nStuAge = ::GetPrivateProfileInt("StudentInfo","Age",10,"d:\\stud.ini");
cout << "strStudName = " << strStudName << endl;
cout << "nStuAGE = " << nStuAge << endl;

return 0;
}

d:\我的文档\visual studio 2005\projects\inifile\inifile\inifile.cpp(19) : error C2664: “T2W”: 不能将参数 1 从“LPCTSTR”转换为“LPTSTR”
1> 转换丢失限定符
1>d:\我的文档\visual studio 2005\projects\inifile\inifile\inifile.cpp(21) : error C2664: “WritePrivateProfileStringW”: 不能将参数 1 从“const char [12]”转换为“LPCWSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\我的文档\visual studio 2005\projects\inifile\inifile\inifile.cpp(23) : error C2664: “void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)”: 不能将参数 1 从“const char [3]”转换为“const wchar_t *”
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=ATL::StrTraitATL<wchar_t,ATL::ChTraitsCRT<wchar_t>>
1> ]
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\我的文档\visual studio 2005\projects\inifile\inifile\inifile.cpp(24) : error C2664: “WritePrivateProfileStringW”: 不能将参数 1 从“const char [12]”转换为“LPCWSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\我的文档\visual studio 2005\projects\inifile\inifile\inifile.cpp(28) : error C2664: “GetPrivateProfileStringW”: 不能将参数 1 从“const char [12]”转换为“LPCWSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\我的文档\visual studio 2005\projects\inifile\inifile\inifile.cpp(29) : error C2664: “GetPrivateProfileIntW”: 不能将参数 1 从“const char [12]”转换为“LPCWSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>生成日志保存在“file://d:\我的文档\Visual Studio 2005\Projects\inifile\inifile\Debug\BuildLog.htm”
1>inifile - 6 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========




PS:本人糊涂了 万望哪位大仙指点一二 谢谢
[解决办法]
你的环境应该是unicode的,所以一些函数比如WritePrivateProfileString,你应该指定使用那一种方法比如改成
WritePrivateProfileStringA
[解决办法]
WritePrivateProfileStringA("StudentInof","Name",(LPCSTR)(LPCTSTR)strName,"d:\\stud.ini");

读书人网 >C++

热点推荐