網(wǎng)站建設(shè)審核需要多長(zhǎng)時(shí)間市場(chǎng)調(diào)研報(bào)告模板
流的字符串分界符
在C++的iostream中,有流的字符串分界符:
" “和”"都代表簡(jiǎn)單的分隔。
因此,使用流來(lái)做字符串分隔的話,有一個(gè)比較簡(jiǎn)單的方案就是將原定義的分隔符通過(guò)替換的方式變成流的分隔符。然后再錄入流中就能自然的實(shí)現(xiàn)字符串的分隔了。
如何針對(duì)字符串進(jìn)行替換
這里以最常見(jiàn)的一個(gè)例子來(lái)說(shuō)?!?#xff0c;”分隔符經(jīng)常出現(xiàn)再csv之類的文件中。
如果你使用的是普通string類型(char* 或者char[]也可以),那么你可以直接使用string.replace(x,y)把x變成y的函數(shù)。
如果你是CString的話,你可以看下面這個(gè)例子:
void CMFCSTREAMREPLACEDlg::OnBnClickedReplace()
{// TODO: 在此添加控件通知處理程序代碼CString str;STRING_E.GetWindowText(str);CString x = _T(",");CString y = _T(" ");str.Replace(x,y);STRING_E.SetWindowText(str);
}
這是進(jìn)行替換前的數(shù)據(jù)。
這是進(jìn)行替換后的數(shù)據(jù)。
完成替換后,使用流進(jìn)行分割
流會(huì)自動(dòng)識(shí)別出空格來(lái),把一個(gè)連續(xù)的字符串分割成一份一份的。
我們可以把CString字符串轉(zhuǎn)String后錄入流中再讀取(分隔嘛),代碼如下:
void CMFCSTREAMREPLACEDlg::OnBnClickedDivide()
{// TODO: 在此添加控件通知處理程序代碼CString str;STRING_E.GetWindowText(str);CString x = _T(",");CString y = _T(" ");str.Replace(x, y);STRING_E.SetWindowText(str);//CString轉(zhuǎn)Stringsize_t i;int iSize;iSize = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL); //iSize =wcslen(pwsUnicode)+1=6char* pMBBuffer = (char*)malloc(iSize);wcstombs_s(&i, pMBBuffer, (size_t)iSize,str, (size_t)iSize - 1);istringstream is(pMBBuffer);char buff;while (is>>buff) {CString box(buff);MessageBox(box);}
}
效果是把輸入的字符串實(shí)現(xiàn)了一份一份的輸出:
輸入完成后,點(diǎn)擊DIVIDE按鈕實(shí)現(xiàn)了一份一份的輸出: