C++中getline函数的问题
C++中调试一个OnOK()函数,每次点确定按钮的时候都会出现基础类应用程序已停止工作,请问该怎么解决,以下是我的OnOK函数的代码!其中,CEditm_DirName;...
C++中调试一个OnOK()函数,每次点确定按钮的时候都会出现基础类应用程序已停止工作,请问该怎么解决,以下是我的OnOK函数的代码!其中,CEdit m_DirName;CString m_str;
void CChooseDirDlg::OnOK()
{
// TODO: Add extra validation here
LPSTR path;
path=_T("D:\\vs2010project\\humantrack\\silhouettes\\fyc");
//path=_T("");
m_str =(char)m_DirName.GetLine(0,path);
CDialog::OnOK();
} 展开
void CChooseDirDlg::OnOK()
{
// TODO: Add extra validation here
LPSTR path;
path=_T("D:\\vs2010project\\humantrack\\silhouettes\\fyc");
//path=_T("");
m_str =(char)m_DirName.GetLine(0,path);
CDialog::OnOK();
} 展开
3个回答
展开全部
你是要GetLine到path里面去吗?这样肯定不行的,你的程序中path指向的是个常量字符串,不能修改,而你试图修改其内容肯定报错
另外Getline的用法详见MSDN:http://msdn.microsoft.com/zh-SG/library/7775836w
另外Getline的用法详见MSDN:http://msdn.microsoft.com/zh-SG/library/7775836w
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int GetLine( int nIndex, LPTSTR
lpszBuffer ) const;
int GetLine( int nIndex, LPTSTR
lpszBuffer, int nMaxLength ) const;
这是CEdit中的Getline函数定义,你上边的程序是要干什么?
你貌似连getline基本用法和参数的意义以及返回值意义都不知道,就在乱用了。
lpszBuffer ) const;
int GetLine( int nIndex, LPTSTR
lpszBuffer, int nMaxLength ) const;
这是CEdit中的Getline函数定义,你上边的程序是要干什么?
你貌似连getline基本用法和参数的意义以及返回值意义都不知道,就在乱用了。
更多追问追答
追问
我用的不就是getline的第一种形式吗?
追答
.........................
GetLine函数究竟是干什么的,返回值是什么意思?里边参数又是什么意思,你明白了么?
你用的这叫形似而已,参数格式没错,但是意义全变了。
CEdit::GetLine
int GetLine(int nIndex,LPCTSTR lpszBuffer) const;
int GetLine(int nIndex,LPCTSTR lpszBuffer, int nMaxLength) const;
返回值实际拷贝的字节数。如果由nIndex指定的行号大于此编辑控件的行数,则返回值为0。
参数
nIndex 指定从多行编辑控件中检索的行的行号,行号由0指定。对单行编辑控件,此参数被忽略。
lpszBuffer指向获取此行备份的缓冲区。缓冲区的第一个字必须指定能被拷贝到缓冲区的最大字节数。 nMaxLength指定能被拷贝到缓冲区的最大字节数,GetLine在调用Windows之前将此值放置到lpszBuffer的第一个字中。说明调用此成员函数从编辑控件中获取文本的一行并将其放置到lpszBuffer缓冲区。被拷贝的行不包括空终止符。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
path是指向常量字符串的指针,当然不能写入数据了,改为TCHAR path[256];
追问
好像不能这样定义吧,如果这样定义的话,我要给path赋值,会报错。表达式必须是可修改的左值。
追答
你要给path赋值,请参考字符串的赋值,使用_tcscpy,geline就是要在path中填写数据
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询