字符串输出错误

时间:2015-05-28 06:04:30

标签: c++ string

我的程序计算每个单词在空格之前的长度,并将其与固定数字进行比较。 该数字是从另一个字符串(pi)中选择的。

我不知道为什么,但我的变量FLAG总是设置为false,所以我总是得到相同的输出。

我不知道问题出在哪里。请帮忙

#include <iostream>
#include <cstdio>
#include <string>
#include <cmath>
#include <algorithm>
#include <iomanip>


using namespace std;

int main() {

    int t=0,num;
    int i,j,len,space;
    bool FLAG;

    string pi ="31415926535897932384626433833",song;

    cin>>t;

    while(t--){

    len=0,space=0,i=0,j=0,num=0,FLAG=true;

    cin.ignore();

    getline(cin,song);

 // problem from here

      while(1) {

            i=0,num=0,FLAG=true;

            len=song.length();

            space=song.find(' ');

            if(space==-1){
                    if(len==pi[j]){
                            FLAG=true;
                            break;
                    }
                    else{
                            FLAG=false;
                            break;
                    }
            }

            else{

      while(i<space){
      num++;
      i++;
      }

      if(num==pi[j]){
            FLAG=true;
            j++;
            num=0;
            i=0;
            song.erase(0,space+1);
            cout<<song<<endl;
                     }

                else{
                    FLAG=false;
                    break;
                }
      }

    }

// to here


    if(FLAG==true){
        cout<<"It's a pi song."<<"\n";
    }

    else{
        cout<<"It's not a pi song."<<"\n";
    }

    }

return 0;
}

1 个答案:

答案 0 :(得分:2)

您正在将整数与字符值进行比较。即你正在比较3与&#39; 3&#39;。要从字符数字中获取数字,请减去&#39; 0&#39;。

所以你可以写

if (len==(pi[j] - '0'))

另外,请学习使用调试器,您可以单步执行代码以找到不起作用的行。