簡體   English   中英

substr in c ++問題

[英]substr in c++ problem

當我嘗試執行程序時,輸出將按預期進行第一次迭代。 但是對於第二次迭代,輸出並沒有按預期進行...

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: no

但是預期的輸出是:

hai
tension

任何線索為什么會這樣?

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

第二個參數不是結束索引。

一個簡單的解決方法: configParam = insertBuffer.substr(mCBeginPos,mCPos - mCBeginPos);

從該鏈接http://en.cppreference.com/w/cpp/string/basic_string/substr中,我讀到第二個參數是一個計數而不是位置。 這有幫助嗎,還是我在這里錯了?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM