C++ c+中的substr+;问题
当我尝试执行该程序时,第一次迭代的输出与预期一样。但对于第二次迭代,结果并不像预期的那样C++ c+中的substr+;问题,c++,C++,当我尝试执行该程序时,第一次迭代的输出与预期一样。但对于第二次迭代,结果并不像预期的那样 int main(){ string insertBuffer; string valSep; valSep = ":"; string configParamSep = "\r\n"; int configParamSepSize = 2; string configParam; string:
int main(){
string insertBuffer;
string valSep;
valSep = ":";
string configParamSep = "\r\n";
int configParamSepSize = 2;
string configParam;
string::size_type mCPos = 0;
string::size_type mCBeginPos = 0;
int finished = 0;
string one = "hai: yes";
string two = "tension: no";
insertBuffer = one + "\r\n" + two + "\r\n";
cout<<"OUTPUT:"<<"\n";
while (!finished){
if( !(mCBeginPos >= insertBuffer.length()) && ((mCPos = insertBuffer.find(valSep,mCBeginPos)) != string::npos)){
configParam = insertBuffer.substr(mCBeginPos,mCPos);
}else{
finished = 1;
break;
}
cout<<configParam<<"\n";
mCBeginPos = mCBeginPos + insertBuffer.find(configParamSep,mCBeginPos) + configParamSepSize;
}
return 0;
}
但预期输出为:-
hai
tension
有什么线索可以解释为什么会发生这种情况吗?从这个链接中,我了解到第二个参数是计数,而不是位置。这有帮助吗,还是我错了?从这个链接中,我看到第二个参数是计数而不是位置。这有帮助吗,还是我错了?basic\u字符串substr(
basic_string<CharType, Traits, Allocator> substr(
size_type _Off = 0,
size_type _Count = npos
) const;
大小\类型\关闭=0,
大小\类型\计数=NPO
)常数;
第二个参数不是结束索引
一个简单的修复方法:configParam=insertBuffer.substr(mCBeginPos,mCPos-mCBeginPos)代码>基本字符串子字符串(
大小\类型\关闭=0,
大小\类型\计数=NPO
)常数;
第二个参数不是结束索引
一个简单的修复方法:configParam=insertBuffer.substr(mCBeginPos,mCPos-mCBeginPos)代码>
basic_string<CharType, Traits, Allocator> substr(
size_type _Off = 0,
size_type _Count = npos
) const;