我打算写一个函数来保持字符串的第一个和最后一个字母相同,并在最后一个字母后面忽略任何非字母。我应该使用std :: random_shuffle()。我阅读文档,但我似乎并没有把握这个功能的概念。这是我的代码:在一个字符串中随机播放字母C++
#include <iostream>
#include <algorithm>
#include <string>
std::string mix(std::string s){
int last_char;
if(std::isalpha(s[s.size()-1]) == true){
last_char = s.size()-1;
} else {
for(int i=s.size()-1 ; i>0; --i){
if((std::isalpha(s[i]) == false) && (std::isalpha(s[i-1])==true)){
last_char = i -1;
break;
}
}
}
std::random_shuffle(&s[1],&s[last_char]);
return s;
}
int main(){
std::string test = "Hello";
std::cout << mix(test) << std::endl;
}
编辑:现在,但是我不断收到错误:分段错误(核心转储)。有人知道为什么吗?似乎无法找到问题。
它随机打乱您提供 – Alex
你需要学习如何使用调试器的参数之间的内容。同时回答这些问题:last_letter的最终价值是什么?在哪一行分配? –