来源:蜘蛛抓取(WebSpider)
时间:2015-04-14 14:46
标签:
error c2059
關於CStdio::Open的error C2664
各位前輩好目前我照著侯俊傑先生所寫的MFC深入淺出當中的MFCCON輸入程式碼目的是要在console window中執行MFC的部份功能
結果卻無法順利編譯我的程式碼如下
Code Snippet
// MFCCON.cpp : 定義主控台應用程式的進入點。//#include &stdafx.h&#include &iostream&#include &MFCCON.h&#ifdef _DEBUG#define new DEBUG_NEW#endif// 僅有的一個應用程式物件CWinApp theAint _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){int nRetCode = 0;// 初始化 MFC 並於失敗時列印錯誤if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)){// TODO: 配合您的需要變更錯誤碼_tprintf(_T(&嚴重錯誤: MFC 初始化失敗\n&));nRetCode = 1;}else{// TODO: 在此撰寫應用程式行為的程式碼。CSCStdioFfile.Open(&test.txt&, CFile::modeCreate|CFile::modeWrite|CFile::typeText);/* str.Format(&%s\n&, &Hello world!!&);printf(&%s\n&, (LPCTSTR) str);file.WriteString(str);for (int i =1;i&=10;i++){str.Format(&%d\n&, i);printf(&%s&, (LPCTSTR) str);file.WriteString(str);}*/file.Close();}system(&PAUSE&);return nRetC}編譯訊息如下
1&------ 已開始建置: 專案: MFCCON, 組態: Debug Win32 ------1&正在編譯...1&MFCCON.cpp1&c:\documents and settings\esoc\my documents\visual studio 2005\projects\mfccon\mfccon\mfccon.cpp(36) : error C2664: 'CStdioFile:pen' : 無法將參數 1 從 'const char [9]' 轉換成 'LPCTSTR'1& 指向的型別沒有相關; 轉換必須有 reinterpret_cast、C-Style 轉換或函式樣式轉換1&已將建置記錄儲存於 &file://c:\Documents and Settings\esoc\My Documents\Visual Studio 2005\Projects\MFCCON\MFCCON\Debug\BuildLog.htm&1&MFCCON - 1 個錯誤,0 個警告========== 建置: 0 成功、1 失敗、0 最新、0 略過 ==========有人知道這是為什麼嗎??以及如何解決?
應該是UNICODE的問題, 您可以將這一行:
file.Open(&test.txt&, CFile::modeCreate|CFile::modeWrite|CFile::typeText);
file.Open(_T(&test.txt&), CFile::modeCreate|CFile::modeWrite|CFile::typeText);
Microsoft 正在进行一项网上调查,以了解您对 Msdn 网站的意见。如果您选择参加,我们将会在您离开 Msdn 网站时向您显示该网上调查。是否要参加?
<input type="hidden" id="hdnTrackerText" value="请不要关闭此窗口。谢谢!完成访问时,调查将显示在此处,所以请不要关闭此窗口。" />
其他 Office 网站【C++ error C2664】-突袭网
23:04:03【 转载互联网】 作者: &&|&责编:李强
&&& &为了解决用户可能碰到关于"C++ error C2664"相关的问题,突袭网经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"C++ error C2664"相关的详细问题如下:&min,=n;}void lookup (int t[10], int & min题,最大值;&max<。#include &int *':编写函数void lookup (int t[],&i&&}}error C2664;int &'*(&min))*(&min)=t[i];",n: ', int &min, int &*(&max))*(&max)=t[i]:&<, int & max)在数组t的前n个元素中找出最小的元素且存于min所引用的内存单元;&最小值, int &max);const',if(t[i]&cout&lookup(t;t'&\ A reference that is not to '&for(i=1;lookup' ,&max),void main(){int t[10]:&';且编写主函数构成完整程序,最大的元素且存于max所引用的内存单元: cannot convert parameter 3 from 'iostream&min&& to ', int &max){i++){if(t[i]&void lookup (int t[],n;&<===========突袭网收集的解决方案如下===========
解决方案1:<解决方案2:非常感谢
================可能对您有帮助================
这些样写试试 ; Bitmap *pBitmap = new Bitmap(L"resource\\Close.png"); LoadResImage(IDB_PNG_CLOSE,&pBitmap); delete pB=========================================== char 和TCHAR的区别是 1字节编码还是2字节编码。'1'的char编码是0x31,而TCHAR编码这是0x31,0x00.所谓的unicode支持。(当然了,如果你在非unicode环境下char 和TCHA...=========================================== strcat(strWinDir, _T(&\\winhlp32.exe&));换成 lstrcat(strWinDir, _T(&\\winhlp32.exe&));试试呢=========================================== 类型不匹配.strcpy不能将参数1从字符型转换为指针===========================================1653人阅读
c_str函数的返回值是const char*的,不能直接赋值给char*,所以就需要我们进行相应的操作转化,下面就是这一转化过程。
c++语言提供了两种字符串实现,其中较原始的一种只是字符串的实现。与C语言的其他部分一样,它在c++的所有实现中可用,我们将这种实现提供的字符串对象,归为c-串,每个c-串char*类型的。
标准头文件&cstring&包含操作c-串的函数库。这些表达了我们希望使用的几乎每种字符串操作。 当调用,客户程序提供的是型参数,而库函数内部实现用的是c-串,因此需要将string对象,转化为char*对象,而c_str()提供了这样一种方法,它返回const
char*类型(可读不可改)的指向字符的。 例:
#include &iostream&
#include &string&
int main()
string add_to = &hello!&;
const string add_on = &baby&;
const char *cfirst = add_to.c_str();
const char *csecond = add_on.c_str();
char *copy = new char[strlen(cfirst) + strlen(csecond) + 1];
strcpy(copy, cfirst);
strcat(copy, csecond);
add_to =
cout && ©: & && copy &&
delete []
cout && &add_to: & && add_to &&
//我强烈建议,以及我的老师也强烈建议我
//一定要用return 0; 来告诉系统:程序正常结束.
//return -1;是用来告诉系统:程序异常结束
//亲们,做开发要认真~共勉~
//一定要用 int main()
return 0;
//以上程序过编译
//VC 6.0, win7, - -!兼容性差
——————
简单的例子:
函数声明:const char *c_str();
c_str()函数返回一个指向正规C字符串的, 内容与本string串相同.
这是为了与兼容,在c语言中没有型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。
注意:一定要使用strcpy()函数 等来操作方法c_str()返回的
比如:最好不要这样:
string s=&1234&;
c = s.c_str();
//c最后指向的内容是垃圾,因为s对象被析构,其内容被处理(纠正:s对象的析构是在对c完成赋值操作之后进行的,故此处并没有错误)
在vc++2010中提示的错误原因:
应该这样用:
char c[20];
string s=&1234&;
strcpy(c,s.c_str());
这样才不会出错,c_str()返回的是一个临时,不能对其进行操作
———再举个例子———
c_str() 以const char* 类型返回 string 内含的字符串
如果一个函数要求char*参数,可以使用c_str()方法:
string s = &Hello World!&;
printf(&%s&, s.c_str()); //输出 &Hello World!&
——————
c_str在打开文件时的用处:
当需要打开一个由用户自己输入文件名的文件时,可以这样写:ifstream in(st.c_str());。其中st是型,存放的即为用户输入的文件名。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:24355次
排名:千里之外
原创:17篇
转载:66篇
(2)(7)(2)(3)(1)(5)(3)(2)(1)(3)(6)(5)(2)(2)(1)(2)(12)(5)(2)(15)(3)c++错误 C2664_百度知道
c++错误 C2664
inf.open(name); head=NULL; while(!inf.eof()) {
Fread = new F
inf&&Fread-&num&&Fread-&ans&&Fread-&qew&&Fread-&input&&Fread-&line&&Fread-&choice1&&Fread-&choice2;
Fread-&next=NULL;
if(head==NULL)
last-&next=NULL;
last-&next=F
last-&next=NULL;
} } inf.close();error C2664: 'void __thisc珐揣粹废诔肚达莎惮极all std::basic_ifstream&char,struct std::char_traits&char& &::open(const char *,int)' : cannot convert parameter 1 from 'class std::basic_string&char,struct std::char_traits&char&,class std::allocator&char& &' to 'const char *'
出现了新的问题err珐揣粹废诔肚达莎惮极or C2065: 'strncpy_s' : undeclared identifierbegin:for(Fread=FFread=Fread-&next){
char input[10],choice1[10],choice2[10];
if(strcmp(num,Fread-&num)==0){
cout&&Fread-&ans&&endl&&Fread-&qew&&endl&&Fread-&input&&endl&&Fread-&line&&
cin.getline(input,10);
strncpy_s(choice1,10,Fread-&choice1,(strlen(Fread-&choice1)-strlen(strchr(Fread-&choice1 ,':'))));
strncpy_s(choice2,10,Fread-&choice2,(strlen(Fread-&choice2)-strlen(strchr(Fread-&choice2 ,':'))));
提问者采纳
第一行改成inf.open(name.c_str());
提问者评价
这个问题解决了,还有个问题我找别人解决的
其他类似问题
按默认排序
其他2条回答
这里有错误代码含义解释
inf.open(name);
name是什么
大概这里搓了
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁