程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 返回值--CString和指針的區別

返回值--CString和指針的區別

編輯:C++入門知識

char *ReadLob(CString filename)

{

  char msgbody[1024];

  return msgbody

}

//////////////////////////////////////////////////////////////////////////////////////////////////////<區別

int ReadLob(CString filename, char* node702_msgbody, int iSz)

  std::ifstream file;  file.open(filename); 

  if(!file)

   {   printf("Unable to open file\n");   return -1;  }

   char pBuf[1024*4];  int iRead = 0, iCur = 0;

  while(!file.eof())    

  {       

      file.read(pBuf,sizeof(pBuf));      

       iRead = file.gcount();            

      int iCpy = iRead+iCur >= iSz ? iSz - iCur - 1 : iRead;       

      strncpy(node702_msgbody+iCur, pBuf, iCpy);       iCur += iCpy;      

       if(iCur == sizeof(node702_msgbody) - 1)            

          break;    

   }    

  node702_msgbody[iCur] = 0;   

   return 0;

}

///////////////////////////

說是第一種,指針必須是new的才可以作為返回值,不讓函數內的數組頭,作為指針返回,會出現問題,

我操作之所以沒有出現問題是因為,中沒有別的代碼來破壞之前的棧空間

可以返回CString的類型,CString可以保護起來字符串。

最好還是第二種方式

///////////////////////////

讀取字段要加入iCur來分段讀取,這樣會好些

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved