为什么此C ++程序不打印任何内容?

时间:2020-08-29 12:57:02

标签: c++ string algorithm vector data-structures

我有这个C ++程序,但是它在控制台中不打印任何内容。 我正在将字符串的内容复制到2个向量中,并对它们进行计数递增操作。

#include <iostream>
#include<vector>
#include<bits/stdc++.h>
#include<string>
using namespace std;

int main()
{
  string s;
  cin>>s;
  int i,j;
  vector<char> a;
  vector<char> b;
  int count1=0;
  int count2=0;
  int count3=0;
  int t=s.length()/2;
  for(i=0;i<t-1;t++)
  {
      a.push_back(s[i]);
  }
  for(j=t;j<s.length();j++)
  {
      b.push_back(s[j]);
  }
        int e1,e2;
  for (auto it1 = a.begin(), it2 = b.begin();
     it1 != a.end() && it2 != b.end(); 
     ++it1, ++it2)
  {
      if(int(*it1)>int(*it2))
         count1++;
 
      if(int(*it1)<int(*it2))
         count2++;
 
      if(int(*it1)==int(*it2))
         count3++;
  }
  
  cout<<min(min(count1,count2),count3);
}

我最后要打印三个计数中的最小值。

2 个答案:

答案 0 :(得分:0)

我发现您的代码在下面陷入了无限循环。

for (i = 0; i < t - 1; t++)   // not t++, but it should be i++
{
    a.push_back(s[i]);
}

我还相信,调试技能可以帮助您在程序中发现错误。

答案 1 :(得分:0)

在插入cin>>s;之后,程序将等待插入数据,在变量string s上插入数据之后,但是在您的代码之后,它的目标似乎并不清楚,因为对于多个输入,您使用内部if的方法基本上什么都不会做,您的最初目标是什么?

在for中有一个循环。 将原始的块报价覆盖为:

  int t=s.length()/2;
  for(i=0;i<t-1;i++)
  {
      a.push_back(s[i]);
  }