Lösungen für die Eingabe mehrerer Zeichenfolgen, die Leerzeichen enthalten können

Die ursprüngliche Schreibweise:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
	cin>>t;
	getchar();//吸收回车符
	while(t--)
	{
		string s;
		getline(cin,s);
		cout<<s<<endl;
	}
	return 0;
} 

Um die Eingabe- und Ausgabeeffizienz zu beschleunigen, wurden später die Ausgabesynchronisierung und -entbündelung deaktiviert. Die obige Schreibmethode schlug jedoch fehl. Daher wurde getchar () durch cin.ignore () ersetzt, um dieses Problem zu lösen.

Eine übliche Funktion von cin.ignore() besteht darin, den Inhalt des Eingabepuffers zu löschen, der mit einem Wagenrücklauf endet, wodurch der Einfluss der vorherigen Eingabe auf die nächste Eingabe eliminiert wird. Beispielsweise kann es wie folgt verwendet werden: cin.ignore (1024, '\n'). Normalerweise wird der erste Parameter groß genug eingestellt, sodass nur der zweite Parameter '\n' funktioniert. Dieser Satz dient also dazu, alle Zeichen vor dem Wagenrücklauf (einschließlich Wagenrücklauf) aus dem Eingabepufferstrom zu löschen.

Wenn standardmäßig kein Parameter angegeben ist, lautet der Standardparameter cin.ignore (1, EOF), dh ein Zeichen vor EOF und ein Zeichen vor EOF und Ende.
 

Späteres Schreiben:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
	int t;
	cin>>t;
	cin.ignore();
	while(t--)
	{
		string s;
		getline(cin,s);
		cout<<s<<endl;
	}
	return 0;
} 

Ich denke du magst

Origin blog.csdn.net/weixin_61725823/article/details/125868572
Empfohlen
Rangfolge