Cách chia đối tượng CString
theo độ phân giải trong vC++?Tách chức năng cho MFC Cstring Class
Ví dụ tôi có một giá trị string
"một + hai + ba + Bốn"
thành một varable CString
.
Cách chia đối tượng CString
theo độ phân giải trong vC++?Tách chức năng cho MFC Cstring Class
Ví dụ tôi có một giá trị string
"một + hai + ba + Bốn"
thành một varable CString
.
Tương tự như this question:
CString str = _T("one+two+three+four");
int nTokenPos = 0;
CString strToken = str.Tokenize(_T("+"), nTokenPos);
while (!strToken.IsEmpty())
{
// do something with strToken
// ....
strToken = str.Tokenize(_T("+"), nTokenPos);
}
Trong VC6, nơi CString không có một phương pháp tokenize, bạn có thể hoãn đến strtok chức năng và những người bạn của nó.
#include <tchar.h>
// ...
CString cstr = _T("one+two+three+four");
TCHAR * str = (LPCTSTR)cstr;
TCHAR * pch = _tcstok (str,_T("+"));
while (pch != NULL)
{
// do something with token in pch
//
pch = _tcstok (NULL, _T("+"));
}
// ...
CString sInput="one+two+three";
CString sToken=_T("");
int i = 0; // substring index to extract
while (AfxExtractSubString(sToken, sInput, i,'+'))
{
//..
//work with sToken
//..
i++;
}
Đó là một vấn đề với OO crappy và các API nghèo - chức năng khắp nơi :) Tìm tốt. – sje397
Bạn có thể trả lời câu hỏi của riêng bạn. Đó là trong Câu hỏi thường gặp. – sje397
Tôi sẽ thay đổi dấu phẩy thành dấu cộng hoặc ví dụ sẽ không hoạt động. – TechNyquist
int i = 0;
CStringArray saItems;
for(CString sItem = sFrom.Tokenize(" ",i); i >= 0; sItem = sFrom.Tokenize(" ",i))
{
saItems.Add(sItem);
}
Xin chào, Mã hóa không được hỗ trợ trong VC6 MFC, nhưng được hỗ trợ trong ATL – Dharma
Có lẽ bạn nên thêm yêu cầu đó vào câu hỏi. – sje397
[Các tài liệu cho CStringT :: Tokenize()] (http://msdn.microsoft.com/en-us/library/k4ftfkd2.aspx) nói rằng hàm bỏ qua các dấu tách hàng đầu, vì vậy nếu bạn thực sự muốn tách một chuỗi và không bỏ qua các phần tử rỗng, sau đó tôi sẽ nói rằng bạn không thể sử dụng 'Tokenize()'. Ví dụ, "+ một + hai + ba + bốn" sẽ không mang lại kết quả mong đợi của 5 chất nền. – herzbube