为什么我的字符串未定义?

时间:2015-06-18 03:24:04

标签: c++ permutation

错误说s在我的代码中此时未定义:

cout << "Enter the string : ";

cin >> s;

我该如何解决?

另外,我的第二个支架上的另一个错误是&#34;期待a;&#34;。我该怎么做才能解决这个问题?

这是我的完整代码:

#include <stdafx.h>
#include <cctype>    
#include <iostream>
#include <string>
using namespace std;
int main()
{
    void permutation(string s, int i, int n)
    {
        int j;
        if (i == n)
            cout << s << "\t";
        else
        {
            for (j = i; j < s.length(); j++)
            {
                swap(s[i], s[j]);
                permutation(s, i + 1, n);
                swap(s[i], s[j]);

                cout << "Enter the string : ";
                cin >> s;
                cout << endl << "The permutations of the given string : " << endl;
                permutation(s, 0, s.length() - 1);
                cout << endl;
            }

4 个答案:

答案 0 :(得分:0)

我没有看到你定义字符串s的地方。 C ++是声明性的。在使用之前必须声明所有变量。它与PHP有所不同,例如,初始化变量等同于声明变量。

答案 1 :(得分:0)

看看你的括号的嵌套。看起来你在main()中声明了你的排列函数。这可能会使编译器感到困惑。

答案 2 :(得分:0)

void permutation(string s,int i,int n)在main中定义。把它放在外面检查。以下是错误的

int main()
{
void permutation(string s, int i, int n)

答案 3 :(得分:0)

您已在主块中声明了您的函数,这导致编译错误。在外面声明它 -

#include <cctype>    
#include <iostream>
#include <string>
using namespace std;
void permutation(string s, int i, int n)

{

int j;

if (i == n)

cout << s << "\t";

else

{

for (j = i; j < s.length(); j++)

{

swap(s[i], s[j]);

permutation(s, i + 1, n);

swap(s[i], s[j]);

}
}
}
int main()
{ 
 string s;
 cout << "Enter the string : ";

 cin >> s;

 cout << endl << "The permutations of the given string : " << endl;

 permutation(s, 0, s.length() - 1);

 cout << endl;
 }