MFC总结(17) --- CString 参数传递问题

转载 2015年11月19日 15:43:58

标题:MFC中关于CString 参数传递

作者:厚道心得

原文章地址:http://blog.sina.com.cn/s/blog_3f59eb3d010008a8.html


<CString 参数传递约定>
  当定义类接口时,必须确定为成员函数确定参数传递约定。现在有一些传递和返回 CString 对象的标准规则。如果遵循作为函数输入的字符串和作为函数输出的字符串中所述的规则,那么将得到正确而又有效的代码。

<作为函数输入的字符串>
  如果字符串是某个函数的输入,在大多数情况下,最好将该字符串函数参数声明为 LPCTSTR。在函数中根据需要使用构造函数和赋值运算符将其转换为 CString 对象。如果一个函数将要更改字符串的内容,那么将参数声明为非常数的 CString 引用 (CString&)。

<作为函数输出的字符串>
   通常情况下,可以从函数返回 CString 对象,因为 CString 对象遵循基元类型那样的值语义。要返回只读字符串,则使用常数 CString 引用 (const CString&)。以下示例阐释 CString 参数的使用方法和返回类型:

class CName : public CObject
{
private:
    CString m_firstName;
    char m_middleInit;
    CString m_lastName;
public:
    CName() {}
    void SetData( LPCTSTR fn, const char mi, LPCTSTR ln )
    {
        m_firstName = fn;
        m_middleInit = mi;
        m_lastName = ln;
    }
    void GetData( CString& cfn, char mi, CString& cln )
    {
        cfn = m_firstName;
        mi = m_middleInit;
        cln = m_lastName;
    }
    CString GetLastName()
    {
        return m_lastName;
    }
};
...
CName name;
CString last, first;
TCHAR middle;
name.SetData( "John", 'Q', "Public" );
ASSERT( name.GetLastName() == "Public" );
name.GetData( first, middle, last );
ASSERT( ( first == "John" ) && ( last == "Public" ) );
...


相关文章推荐

想在函数中传递CString 类型的数组,后来采用CStringArray类来传递

想在函数中传递CString 类型的数组,后来采用CStringArray类来传递 参考下面的 http://topic.csdn.net/t/20020221/19/536353.html  voi...

MFC中将EDIT控件或CString文件复制到剪切板中

网上好多教程讲如何复制到剪切板,但是有可能复制的是乱码,为了方便,将CString类型的复制到剪切板 CString source; if (OpenClipboard()) { //...

编辑框控件的两种成员变量(CEdit控件类型与CString 值类型之间的关联问题)

1.  edit控件---与---控件ID直接操作 由id—转化—句柄—类指针 ((CEdit*)GetDlgItem(IDC_EDITID))->SetWindowText(str);/...

你还在靠“喂喂喂”来测语音通话质量吗,看完这篇文章你就能掌握正确姿势。

语音通话开发,对于一般开发者来说比较神秘,很多朋友不太清楚如何全面的评估第三方的音频引擎,如何科学的选择一家靠谱的语音通话服务供应商。 很多朋友还停留在这样的初级阶段:把demo调通,找几个人喂喂喂...

windows系统中dll文件详解

Windows的系统中DLL文件详解(很通俗)(2008-09-05 15:11:09)转载 标签:杂谈分类:编程Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库。现...

CString和LPVOID的转换(线程参数传递) .

网上找到很多结果,中文的,外文的。像codeproject,stackoverflow等等,看到的结果都不能解决问题。 自己动手,丰衣足食。 msdn上说,CString可以用来随意替换const...

CString和LPVOID的转换(线程参数传递)

msdn上说,CString可以用来随意替换const char* and LPCTSTR 类型的函数形参。随意转换就是了。具体不深究,解决问题先。 声明一下使用目的:给新开线程传入CStrin...
  • ghevinn
  • ghevinn
  • 2015年04月02日 15:02
  • 1725

关于在C/C++语言中,函数如何返回数组,数组如何作为参数传递以及返回数组的函数该如何调用问题的总结

可能很多初学者对C语言中(C++类似),数组作为参数传递,和一个函数如何返回一个数组这类问题很迷惑,因为这里面涉及到指针问题,而初学者对指针了解甚少,更别说使用了。我也是刚刚需要实现一个简单算法才用到...

MFC中实现父对话框与子对话框之间的参数传递,实例可测

MFC下实现父窗口与子窗口之间的数据传递

Java:数组和集合类作为参数传递时的差别(问题解决,谢谢大家提醒)

最近在做项目时遇到一个List集合作为参数传递的问题,想起了以前总结的参数传递,参数传递包括值传递和引用传递,集合类的参数应该属于引用传递,脑子里突然就闪现到了数组,感觉数组也是一种特殊的集合,也应该...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC总结(17) --- CString 参数传递问题
举报原因:
原因补充:

(最多只允许输入30个字)