gpt4 book ai didi

c++ - CString 标记化问题

转载 作者:搜寻专家 更新时间:2023-10-31 01:13:23 25 4
gpt4 key购买 nike

我正在使用 CString::Tokenize 方法来使用定界符标记字符串,但我注意到一些奇怪的事情,我在循环内对我的字符串调用该方法,因为我想检索字符串中的所有标记,这是我的代码:

CString strToken;
for(int nTokenPos = 0; nTokenPos < dialog->myValue.GetLength(); nTokenPos++)
{
//TRACE( "The Size of the string is %d\n", dialog->myValue.GetLength());
TRACE( "Iteration No %d\n",nTokenPos);
strToken = dialog->myValue.Tokenize(_T("X"), nTokenPos);
strToken+="\n";
OutputDebugString(strToken);
}

注意:dialog->myValue 是我要标记化的字符串。当我在“99X1596”(例如)上测试该代码时,输​​出为:

Iteration No 0
99
Iteration No 4
596

另一个例子:'4568X6547'输出:

Iteration No 0
4568
Iteration No 6
547

我不知道为什么它会忽略定界符“X”之后的第一个字符,而且它会跳过一次迭代!

最佳答案

您在 for 循环中增加 nTokenPos。这就是为什么第二个 token 坏了。 CString::Tokenize 更新 nTokenPos 并在后续迭代中使用它。

正确的用法是这样的:

CString str = "99X1596";
int curPos = 0;
CString resToken = str.Tokenize(_T("X"), curPos);
while(!resToken.IsEmpty())
{
// Process resToken here - print, store etc
OutputDebugString(resToken);

// Obtain next token
resToken = str.Tokenize(_T("X"), curPos);
}

关于c++ - CString 标记化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12581169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com