문자열의 첫 번째와 마지막 문자를 동일하게 유지하고 마지막 문자 뒤의 비 문자를 모두 무시하는 함수를 작성하려고합니다. 나는 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의 최종 가치는 무엇입니까? 할당 된 라인은 무엇입니까? –