Getline и cin производят различные выходные данные в C++
Я должен сосчитать количество раз, когда Суво и СУВОДЖИТ появляются в длинной строке.
Input=> 5 SUVOJITSUVOSUVOJITUCSUVOJITSUVOVXSUVOJITSUVOGMSUVODMMVDSUVOJIT AXRSUVOJITHSUVOJITHSUVOJJSUVOJITSUVOJIT SUVOJITPRQSUVOJIT SUVOJITTXGSUVOUNSUVOJIT SUVOJITSUVOSUVOJITXGSUVOSUVOQSUVOJITKDSALASUVOQESUVOHSSUVODFSUVOJITWSUVOUSUVOJITGJEM
В приведенной ниже программе,когда я беру getline для ввода строки, выход, который она генерирует, всегда состоит из SUVO=0, SUVOJIT=0 в первой строке .В то время как cin>> не производит такого рода поведение .
#include <iostream> #include <string> using namespace std; int main(){ int n; cin>>n; string s; for(int i=0;i<n;i++){ cin>>s; //getline(cin,s) int s1=0,s2=0; for(int j=0;j<s.length();j++){ if(s[j] == 'S'){ if(s.substr(j,7).compare("SUVOJIT") == 0) s1++; else if(s.substr(j,4).compare("SUVO") == 0) s2++; } // } // cout<<"SUVO="<<s2<<", SUVOJIT="<<s1<<endl; } return 0; }
Что я уже пробовал:
Input=> 5 SUVOJITSUVOSUVOJITUCSUVOJITSUVOVXSUVOJITSUVOGMSUVODMMVDSUVOJIT AXRSUVOJITHSUVOJITHSUVOJJSUVOJITSUVOJIT SUVOJITPRQSUVOJIT SUVOJITTXGSUVOUNSUVOJIT SUVOJITSUVOSUVOJITXGSUVOSUVOQSUVOJITKDSALASUVOQESUVOHSSUVODFSUVOJITWSUVOUSUVOJITGJEM