none
这个getline()为什么不能用? RRS feed

  • 问题

  • MFC程序

    添加一个Edit Control控件,定义变量m_edit_BIN是CEdit类型

    m_edit_BIN.getline(i,charB,255);
     

    我看列子里也是这么写的,在getline上点“转到定义”会打开afxwin.h这个文件。

    在我的程序里也点它“转到定义”就出现:“未能找到符号”getline"的定义。”是为 什么?

    (我的外部依赖库项里也有afxwin.h)

    没看例子里多写什么啊(难道我没发现?)

    2013年2月17日 15:58

答案

  • 1 IntelliSense: 没有与参数列表匹配的 重载函数 "CEdit::GetLine" 实例
                参数类型为: (int, CHAR [256], int)
                对象类型是: CEditf:\Visual Studio 2012\Projects\ProjectDlg.cpp242

    改了大小写也这样。。

    例程没错,我写就有错。


    那是由于Unicode编码的问题,请修改成如下方式即可:
    TCHAR szText[256] = {0};
    m_edit.GetLine(0, szText, _countof(szText) - 1); 


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.


    2013年2月18日 6:47
    版主
  • 这个和转成机器码没有关系。

    用TCHAR类型是CEdit::Getline这个函数的需要,根据这个函数的定义,第二个参数要求是LPTSTR类型,所以应该传入一个TCHAR类型的指针。

    详细的解释你可以参考这篇博文:http://blog.csdn.net/douzixinxin/article/details/869937


    Damon Zheng
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 angel725 2013年2月23日 8:35
    2013年2月21日 17:58
    版主

全部回复

  • CEdit::GetLine()
    int GetLine(
     int nIndex,
     LPTSTR lpszBuffer 
    ) const;
    int GetLine(
     int nIndex,
     LPTSTR lpszBuffer,
     int nMaxLength 
    ) const;
    请注意大小写

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2013年2月17日 21:31
    版主
  • 1 IntelliSense: 没有与参数列表匹配的 重载函数 "CEdit::GetLine" 实例
                参数类型为: (int, CHAR [256], int)
                对象类型是: CEdit f:\Visual Studio 2012\Projects\ProjectDlg.cpp 242

    改了大小写也这样。。

    例程没错,我写就有错。

    2013年2月18日 5:30
  • 1 IntelliSense: 没有与参数列表匹配的 重载函数 "CEdit::GetLine" 实例
                参数类型为: (int, CHAR [256], int)
                对象类型是: CEditf:\Visual Studio 2012\Projects\ProjectDlg.cpp242

    改了大小写也这样。。

    例程没错,我写就有错。


    那是由于Unicode编码的问题,请修改成如下方式即可:
    TCHAR szText[256] = {0};
    m_edit.GetLine(0, szText, _countof(szText) - 1); 


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.


    2013年2月18日 6:47
    版主
  • 谢谢,按你的 方法可以。

    不过我用的函数(不是我写的)参数是char* asm

    传进去后,还要对其转成机器码。

    用tchar*  转成char* 在用函数转机器码,这样对结果有影响吗?


    • 已编辑 angel725 2013年2月18日 10:44
    2013年2月18日 8:12
  • 这个和转成机器码没有关系。

    用TCHAR类型是CEdit::Getline这个函数的需要,根据这个函数的定义,第二个参数要求是LPTSTR类型,所以应该传入一个TCHAR类型的指针。

    详细的解释你可以参考这篇博文:http://blog.csdn.net/douzixinxin/article/details/869937


    Damon Zheng
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 angel725 2013年2月23日 8:35
    2013年2月21日 17:58
    版主