#include <iostream>
#include <string>
#include <algorithm>
int main()
{
std::string s = "abcdefg";
int n = s.size();
for (int i = 0; i < n; i )
{
for (int j = n; j > i; j--)
{
std::cout << s.substr(i,j) << std::endl;
}
}
}
我想abcdefg, abcdef,... a,從那時輸出子字串,bcdefg, bcdef...b,.
但是,結果顯示有部分重復,例如cdefg我的結果重復了3次,為什么以及如何糾正?
uj5u.com熱心網友回復:
的第二個引數substr應該是count,即子串的長度,所以改變
std::cout << s.substr(i,j) << std::endl;
到
std::cout << s.substr(i,(j-i)) << std::endl;
居住
uj5u.com熱心網友回復:
發生這種情況的原因是因為j始終設定為n。你是在告訴substr你n過去i這不是你想要的。你想要從i到字串的末尾,然后從那里減少。
更改自 for (int j = n; j > i; j--)
到 for (int j = (n - i); j > 0; j--)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/372497.html
