从 CString 引用中获取 CString?

Posted

技术标签:

【中文标题】从 CString 引用中获取 CString?【英文标题】:Get CString from CString reference? 【发布时间】:2013-04-16 11:37:34 【问题描述】:

这是我的代码

CInternetSession session(L"My Session");
CHttpConnection *pHttpCon ;
CHttpFile *filedat = NULL;
pHttpCon = session.GetHttpConnection((LPCTSTR)Url_server, (INTERNET_PORT)1040, (LPCTSTR)username, (LPCTSTR)password);
    filedat = pHttpCon->OpenRequest(CHttpConnection::HTTP_VERB_GET, "");
    filedat->SendRequest();
CString line;
while(filedat->ReadString(line)) 
      printf("Line : %s ",(LPCTSTR)line);
      printf("\n Line Length : %d ",line.GetLength());

问题是字符串读取为“file1.name=201304”,长度为 9 它应该是 17 或更多。哪位小伙伴能告诉我可能是什么问题???

   String Read                                  Showing Length
 "file1.size=16"                                     7                        
 "file1.time=2013/02/28 Thu 10:36:32"                17
 "file1.name=201304"                                 9

【问题讨论】:

如果你期望的长度是17,得到的长度是9,那9个字符串的content是什么?这是您期望的前 9 个字符吗? 没有。内容是“file1.name=201304”.. 那么,你是说CString::GetLength() 给出了错误的值? 是的。如果我手动将字符串值分配给该变量,它会正确给出长度。但这里它是从 CHttpFile::ReadString 分配的 .. 您阅读的字符串超过 1 个吗?您的 printf 写了两行,但只写了一行 \n - 您确定您正在正确读取输出吗? 【参考方案1】:

做以下工作:

while(filedat->ReadString(line)) 

/* Original code
  printf("Line : %s ",(LPCTSTR)line);
  printf("\n Line Length : %d ",line.GetLength());
*/
  _tprintf(L"%s\n", (LPCTSTR)line);
  _tprintf(L"Line Length: %d\n\n", line.GetLength());

【讨论】:

以上是关于从 CString 引用中获取 CString?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Unicode 中的 CFile::Read() 文件中获取 CString 对象?

将宏作为 CString 引用传递

MFC 中char转CString问题

MFC中的CString转char*

C/C++ 中cstring用法?

求一个Cstring类数组文件读取代码