C++ I';我用c+编写了组合程序+;但没有产出,有人能说出原因吗?

C++ I';我用c+编写了组合程序+;但没有产出,有人能说出原因吗?,c++,combinations,C++,Combinations,这个程序打印字符串组合没有结果,有人能帮我吗 #include <iostream> #include <string> using namespace std; void comb(char *inp) { int i, j, k; int len = strlen(inp); for (i = 0; i < len - 2; i++) { for (j = i + 1; j < len - 1; j++

这个程序打印字符串组合没有结果,有人能帮我吗

#include <iostream>
#include <string>

using namespace std;

void comb(char *inp)
{
    int i, j, k;
    int len = strlen(inp);

    for (i = 0; i < len - 2; i++)
    {
        for (j = i + 1; j < len - 1; j++)
        {
            for (k = j + 1; k < len; k++)
            {
                  printf("%c%c%c\n", inp[i], inp[j], inp[k]);
            }
        }
    }
}

//======================================================================
int main ()
{
    char *str;
    cout <<"enter your string\n";  
    cin >> str;

    comb(str);
    return 0;
}
#包括
#包括
使用名称空间std;
空梳(字符*inp)
{
int i,j,k;
int len=strlen(inp);
对于(i=0;i
在这种情况下,我建议使用
std::string
而不是
char[]
。否则,您将需要动态分配内存

#include <iostream>
#include <string>  

void comb(std::string inp)
{
    int len = inp.size();
    for (int i = 0; i < len - 2; i++)
    {
        for (int j = i + 1; j < len - 1; j++)
        {
            for (int k = j + 1; k < len; k++)
                std::cout << inp[i] << inp[j] << inp[k] << std::endl;
        }
    }
}

int main ()
{
    std::string str;
    std::cout << "enter your string\n";
    std::cin >> str;
    comb(str);;
    return 0;
}
#包括
#包括
空梳(标准::字符串inp)
{
int len=inp.size();
对于(int i=0;istd::cout这甚至不会编译:抱歉,我更新了char*str代码;std::coutstr;comb(str);返回0;您应该将该代码写入您的问题中。“编写”。始终在“我有”或“我有”之后使用过去分词。发布实际代码,而不是从内存中重新键入的近似值。如果使用
std::string
,则必须将
更改
comb(std::string inp)
添加到
comb(const std::string&inp)
。这看起来也像是家庭作业。您不应该只是给OP一个完整的解决方案。您还可以使用
comb复制打字(str);
有时包含
。虽然我同意使用
常量和
是一种很好的做法。@PhilippBraun你不应该发布有时有效的代码。如果
std::string
生活在
中,那么你应该使用
,然后你就知道它总是有效的。