В приведенном ниже коде я пытался получить строковый ввод из cin, но он показал некоторую ошибку во время выполнения.
int main(){
int t;
cin>>t;
while(t--){
string s,pat;
cin>>s>>pat;
int q;
cin>>q;
vector<pair<int,char> > queries;
for(int i=0;i<q;i++){
cin>>queries[i].first;
cin>>queries[i].second;
}
cout<<s<<endl;
cout<<pat<<endl;
}
return 0;}
Поэтому я использовал getline вместо просто cin, как:
getline(cin,s);
getline(cin,pat);
и он показал вывод типа
abcde
для ввода
2 abcde bc 3 0 p 1 q 2 w wxyz cde 2 0 t 1 z
, поэтому мне кажется, что getline занимает пробел после t, который сохраняется в строке s для первоготестовый пример и первая строка, то есть «abcde», хранится в строке pat, и я не понимаю, почему она печатает пустую строку для второго тестового примера.
Поэтому, чтобы избавиться от этого дополнительного пространства после t, я добавилдополнительная строка для хранения этого пространства, например:
int main(){
int t;
cin>>t;
string z;
getline(cin,z);
while(t--){
string s;
getline(cin,s);
string pat;
getline(cin,pat);
cout<<s<<endl;
cout<<pat<<endl;
}
return 0;
}
, и она работала для ввода
2 abcde bc wxyz cde
, но когда я добавляю этот код
string s,pat;
getline(cin,s);
getline(cin,pat);
int q;
cin>>q;
vector<pair<int,char> > queries;
for(int i=0;i<q;i++){
cin>>queries[i].first;
cin>>queries[i].second;
}
показывает ошибку во время выполнения.Пожалуйста, помогите ..