可能重复:
在 C++ 中拆分字符串
我试图创建一个模仿函数行为的getline()
函数,并可以选择使用分隔符将字符串拆分为标记。该函数接受 2 个字符串(第二个通过引用传递)和一个char
分隔符类型。它遍历第一个字符串的每个字符,将其复制到第二个字符串,并在到达分隔符时停止循环。true
如果第一个字符串在分隔符之后有更多字符,则返回,false
否则返回。最后一个字符的位置保存在静态变量中。由于某种原因,程序进入无限循环并且没有执行任何操作:
const int LINE_SIZE = 160;
bool strSplit(string sFirst, string & sLast, char cDelim) {
static int iCount = 0;
for(int i = iCount; i < LINE_SIZE; i++) {
if(sFirst[i] != cDelim)
sLast[i-iCount] = sFirst[i];
else {
iCount = i+1;
return true;
}
}
return false;
}
该函数的使用方式如下:
while(strSplit(sLine, sToken, '|')) {
cout << sToken << endl;
}
为什么它会进入无限循环,为什么它不起作用?istringstream
如果可能的话,我应该补充一点,我对不使用的解决方案感兴趣。