C++ C++;字符串操作,字符串下标超出范围

C++ C++;字符串操作,字符串下标超出范围,c++,visual-studio,string,visual-c++,C++,Visual Studio,String,Visual C++,基本上这应该做什么: 1) 获取字符串并查找其长度 2) 遍历键中的所有元素并将所有唯一成员置于开始位置(playfair cipher) Table::Table(字符串键){ int i; 对于(i=0;i

基本上这应该做什么:

1) 获取字符串并查找其长度

2) 遍历
键中的所有元素
并将所有唯一成员置于开始位置(playfair cipher)

Table::Table(字符串键){
int i;
对于(i=0;i
错误:


违规行应该是

start[start.length() - 1] = key[i];

字符串索引从0到(length()-1)。

因为有效索引的范围是从
0
length-1
。如果要向字符串添加字符,请使用push_back

start.push_back(key[i]); //this will increase the length by 1
遍历密钥中的所有元素,并将所有唯一成员放入开始(playfair密码)

您最好使用
std::set
。不要自己查找字符,只需使用
set::insert
方法即可


稍后只需使用
std::copy
set
的内容复制到
string

不,它不应该,它应该是
push_back
当长度为0时,我会尝试将元素添加到位置
-1
?!我想你错了,布雷特。哦,是的,推回,已经忘记了一切。
start.push_back(key[i]); //this will increase the length by 1