2011-07-31 5 views
0

プログラムを実行しようとすると、最初の繰り返しで期待どおりの出力が得られます。しかし、2回目の反復のために、アウト期待...substr in C++問題

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; 
} 

がOUTPUTとして来ていません。

hai 
tension: no 

しかしoutpuは予想: -

hai 
tension 

なぜこれが起こっている任意の手掛かり?

答えて

2
basic_string<CharType, Traits, Allocator> substr(
    size_type _Off = 0, 
    size_type _Count = npos 
) const; 

第2パラメータは終了インデックスではありません。

単純な修正:configParam = insertBuffer.substr(mCBeginPos,mCPos - mCBeginPos);