有一个函数
void test(CString &s)
{
     CString tmp = s;
     s.empty();
     s = tmp;
}这种做法是否安全?为什么我这么写程序会出错?
怎么修改?

解决方案 »

  1.   

    没问题啊,CString的这个函数名是Empty不是empty
      

  2.   

    Empty();不是empty(); 
     
      

  3.   

    安全的 只是把CString s 变为"" 空串
      

  4.   

    在赋回原值 保证 CString &s 不能为无效引用就OK了
      

  5.   

    出错是s.empty();
    改为如下;
    s.Empty();
    使用是安全的,就是赋值,别的没什么。
      

  6.   

    没危险啊,就是个赋值,内存MFC会替你处理的,一般不用管
      

  7.   

    CString::Emptyvoid Empty( );说明:
    此成员函数用来使CString对象成为一个空字符串,并释放相应的内存。
    更多的信息,参见“Visual C++程序员指南”中的“字符串:CString异常清除”。示例:下面的例子说明了如何使用CString::Empty。
    // CString::Empty示例:
    CString s( "abc" );
    s.Empty();
    ASSERT( s.GetLength( ) == 0 );安全
      

  8.   

    我是菜鸟
    void test(CString &s)
    {
      CString tmp = s;
      s.empty();
      s = tmp;
    }
    函数传值的写法是不是有问题啊?字符串的s的地址,tmp是字符串。还进行赋值,是不是有问题啊?empty应为Empty