生成具有所有字符排列的字符串

use*_*444 0 c++

我有以下代码

#include <iostream>
#include <string>
using namespace std;
string generate(){
     for (char c1='A';c1<='Z';c1++){
          for (char c2='A';c2 <='Z';c2++){
               for (char c3='A';c3<='Z';c3++){
                    for (char c4='A';c4<='Z';c4++){


                         return  (new string *)(c1) + (new string*)(c2)+(new string*)(c3)+(new string*)(c4);
                    }
               }
          }
     }


}
int main(){




     return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想生成字符串,但这里是错误

1>------ Build started: Project: string_combinations, Configuration: Debug Win32 ------
1>Build started 9/11/2010 12:42:08 PM.
1>InitializeBuildStatus:
1>  Touching "Debug\string_combinations.unsuccessfulbuild".
1>ClCompile:
1>  string_combinations.cpp
1>c:\users\david\documents\visual studio 2010\projects\string_combinations\string_combinations\string_combinations.cpp(11): error C2064: term does not evaluate to a function taking 1 arguments
1>c:\users\david\documents\visual studio 2010\projects\string_combinations\string_combinations\string_combinations.cpp(11): error C2064: term does not evaluate to a function taking 1 arguments
1>c:\users\david\documents\visual studio 2010\projects\string_combinations\string_combinations\string_combinations.cpp(11): error C2064: term does not evaluate to a function taking 1 arguments
1>c:\users\david\documents\visual studio 2010\projects\string_combinations\string_combinations\string_combinations.cpp(11): error C2064: term does not evaluate to a function taking 1 arguments
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.82
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

请帮助我很困惑为什么我不能通过此方法字符串(char)直接从char转换为字符串

rub*_*nvb 5

我很确定使用std :: next_permutation可以避免手动循环.这样的手动循环很糟糕,特别是当标准库预见到这种情况时.

这是一些快速代码:

#include <algorithm>
    using std::next_permutation;
#include <iostream>
    using std::cout;
    using std::endl;
#include <string>
    using std::string;

int main()
{
    string currentPermutation = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    size_t i=0;
    do
    {
        cout << "permutation " << i << ": " << currentPermutation << endl;
        ++i;
    } while( next_permutation(currentPermutation.begin(), currentPermutation.end()) );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这将排列字符串的所有组合.