string s = "";
cout<<s.substr(0,4)<<endl;
cout<<s.substr(4,7)<<endl;
上面的代碼線的輸出是相當出乎意料的,s.substr(0,4 )給了我「0123」,s.substr(4,7)給了我「456789」。它預計只有「456」。我是否在這裏錯過了一些東西,並且在C++中有沒有其他的substr函數可供選擇,這會讓我在第二次調用時只有「456」。
string s = "";
cout<<s.substr(0,4)<<endl;
cout<<s.substr(4,7)<<endl;
上面的代碼線的輸出是相當出乎意料的,s.substr(0,4 )給了我「0123」,s.substr(4,7)給了我「456789」。它預計只有「456」。我是否在這裏錯過了一些東西,並且在C++中有沒有其他的substr函數可供選擇,這會讓我在第二次調用時只有「456」。
substr
的第二個參數是符號的數量,而不是您所假設的最終指數。您應使用substr(4,3)
。
substr
的第二個參數是所需子字符串的長度,而不是結束索引。所以,而不是s.substr(4,7)
,你想s.substr(4,3)
。
substr
取初始位置和所需的長度 - 見here。
嘗試substr(4,3)
。
這絕對是一個騙局,但我找不到它。 –
@JohnDibling這是一個完全相同的問題:http://stackoverflow.com/questions/2477850/c-string-substr-function-problem我會投票結束重複。 – jogojapan
@jogojapan:那不是我想的那個,但它會。 –