網站建設審核需要多長時間市場調研報告模板
流的字符串分界符
在C++的iostream中,有流的字符串分界符:
" “和”"都代表簡單的分隔。
因此,使用流來做字符串分隔的話,有一個比較簡單的方案就是將原定義的分隔符通過替換的方式變成流的分隔符。然后再錄入流中就能自然的實現(xiàn)字符串的分隔了。
如何針對字符串進行替換
這里以最常見的一個例子來說?!?#xff0c;”分隔符經常出現(xiàn)再csv之類的文件中。
如果你使用的是普通string類型(char* 或者char[]也可以),那么你可以直接使用string.replace(x,y)把x變成y的函數(shù)。
如果你是CString的話,你可以看下面這個例子:
void CMFCSTREAMREPLACEDlg::OnBnClickedReplace()
{// TODO: 在此添加控件通知處理程序代碼CString str;STRING_E.GetWindowText(str);CString x = _T(",");CString y = _T(" ");str.Replace(x,y);STRING_E.SetWindowText(str);
}
這是進行替換前的數(shù)據(jù)。
這是進行替換后的數(shù)據(jù)。
完成替換后,使用流進行分割
流會自動識別出空格來,把一個連續(xù)的字符串分割成一份一份的。
我們可以把CString字符串轉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轉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);}
}
效果是把輸入的字符串實現(xiàn)了一份一份的輸出:
輸入完成后,點擊DIVIDE按鈕實現(xiàn)了一份一份的輸出: