【发布时间】:2018-04-09 06:16:26
【问题描述】:
我的意图是拥有一个包含给定字符串的所有子字符串的向量。我试图通过将向量中的当前字符串与 str
的迭代字符连接来推送元素下面的代码出了什么问题。
void Substring(string str)
{
vector<string> vec={""};
for(auto i =0; i<str.length(); i++)
{
auto end = vec.end();
string s(1,str[i]);
for (auto iter = vec.begin(); iter!=end; iter++)
{
vec.push_back(s+ static_cast<string>(*iter)); // --> what is the problem here in concatenation
}
}
for (auto iter = vec.begin(); iter!=vec.end(); iter++)
{
cout <<"iter_val:"<<*iter <<endl; //--> does not print concated element
}
}
【问题讨论】:
-
您的预期输出和输入 str 格式是什么?
-
如果向量的存储被重新分配(当您
push_back时可能会经常发生这种情况),那么 所有 迭代器将失效。 -
在一个不相关的注释上:
*iter已经是std::string,你不需要转换它。 -
@codekaizer :我只想将 str 的子字符串放入向量中并显示它。
-
对于可能的解决方案,请改用 size,并使用索引进行迭代。