文字列の最初の文字と最後の文字を同じに保ち、最後の文字の後のすべての非文字を無視する関数を書くつもりです。私は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の最終的な価値は何ですか?それはどの行に割り当てられていますか? –