replace 替换/0 字符串处理是以\0为结尾的,也就是说CString tt="abc\0def\0fhi";相当于 tt = "abc"而已 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 void MFCDlg::GetExtraInfo(LPSTR extBuf, std::string& extInfo){ extInfo = ""; bool bFirstNull = false; if(extBuf != NULL) { int iCnt = 0; while(true) { if(bFirstNull && extBuf[iCnt] == '\0') { break; } else if(extBuf[iCnt] == '\0') { bFirstNull = true; } else if(bFirstNull) { extInfo += "\r\n"; extInfo.append(extBuf + iCnt, 1); bFirstNull = false; } else { extInfo.append(extBuf + iCnt, 1); } iCnt++; } }}学习一下人家的思路吧 不会就要谦虚 void MFCDlg::GetExtraInfo(LPSTR extBuf, std::string& extInfo){ extInfo = ""; bool bFirstNull = false; if(extBuf != NULL) { int iCnt = 0; while(true) { if(bFirstNull && extBuf[iCnt] == '\0') { break; } else if(extBuf[iCnt] == '\0') { bFirstNull = true; } else if(bFirstNull) { extInfo += "\r\n"; extInfo.append(extBuf + iCnt, 1); bFirstNull = false; } else { extInfo.append(extBuf + iCnt, 1); } iCnt++; } }}学习一下人家的思路吧 不会就要谦虚受不了啊,人家使用的的std::string,你提的问题及给出的代码是CString,这两个不一样啊 思路不是没有。这种简单的字符串操作思路谁不会啊,但我看这个例子也没解决最末尾 \0 的问题。替换 \0 为其他字符,这个没什么技术,关键点是你如何知道你的所有字符串到头。如果我来做,我觉得微软所使用的 Multi-String 方式挺不错的。TCHAR str[] = TEXT("abc\0def\0fhi\0");即用双 \0 结尾的方式,这是一种比较好的方式来标志所有字符串结束。你发的代码也是用了这种方式而已,即已经有 \0 再遇到 \0 就表示结束。只不过你根本没看到它如何传的参数,如果按你那样去写 "abc\0def\0fhi" 传递进入这个函数同样越界。 思路就别提了,没有标志所有字符串结束的标志,根本没办法解决你的问题。void function(LPSTR pszRet, LPCSTR pszSrc){ if (pszSrc != NULL && pszRet != NULL) { while (*pszSrc != 0) { while (*pszSrc != 0) { *pszRet++ = *pszSrc++; } pszSrc++; } *pszRet = 0; }}int main(void){ char szSrc[] = "abc\0defg\0hijklmn\0"; char szRet[256]; function(szRet, szSrc); puts(szRet); // abcdefghijklmn return 0;} 很奇怪的错误啊,只想知道为什么 MFC,图形保存问题 刚开始学就遇到问题,请指教!! 这样的ActiveX控件如何设计? 帮忙介绍几本关于windows操作系统原理的好书,谢谢 谁做过股票软件,读取通视卡里的数据 MFC编写的Dll 图标? dll问题 csv转换成xls CMFCRibbonStatusBar问题 求助:重定向元素的链接
{
extInfo = "";
bool bFirstNull = false;
if(extBuf != NULL)
{
int iCnt = 0;
while(true)
{
if(bFirstNull && extBuf[iCnt] == '\0')
{
break;
}
else if(extBuf[iCnt] == '\0')
{
bFirstNull = true;
}
else if(bFirstNull)
{
extInfo += "\r\n";
extInfo.append(extBuf + iCnt, 1);
bFirstNull = false;
}
else
{
extInfo.append(extBuf + iCnt, 1);
}
iCnt++;
}
}
}学习一下人家的思路吧 不会就要谦虚
{
extInfo = "";
bool bFirstNull = false;
if(extBuf != NULL)
{
int iCnt = 0;
while(true)
{
if(bFirstNull && extBuf[iCnt] == '\0')
{
break;
}
else if(extBuf[iCnt] == '\0')
{
bFirstNull = true;
}
else if(bFirstNull)
{
extInfo += "\r\n";
extInfo.append(extBuf + iCnt, 1);
bFirstNull = false;
}
else
{
extInfo.append(extBuf + iCnt, 1);
}
iCnt++;
}
}
}学习一下人家的思路吧 不会就要谦虚受不了啊,人家使用的的std::string,你提的问题及给出的代码是CString,这两个不一样啊
void function(LPSTR pszRet, LPCSTR pszSrc)
{
if (pszSrc != NULL && pszRet != NULL) {
while (*pszSrc != 0) {
while (*pszSrc != 0) {
*pszRet++ = *pszSrc++;
}
pszSrc++;
}
*pszRet = 0;
}
}int main(void)
{
char szSrc[] = "abc\0defg\0hijklmn\0";
char szRet[256];
function(szRet, szSrc);
puts(szRet); // abcdefghijklmn
return 0;
}