Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c+中的substr+;问题_C++ - Fatal编程技术网

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;