본문 바로가기
번역/Bjarne Stroustrup's C++ Style and Technique FAQ

How do I read a string from input?

by 겜게준 2018. 3. 14.

입력된 문자열을 어떻게 읽을 수 있나요?



이렇게 하면 공백으로 끝나는 단어 1개를 읽을 수 있습니다.

	#include<iostream>
	#include<string>
	using namespace std;

	int main()
	{
		cout << "Please enter a word:\n";

		string s;
		cin>>s;
	
		cout << "You entered " << s << '\n';
	}

명시적인 메모리 관리가 없다는 것과, 오버플로우를 일으킬 수 있는 고정 사이즈 버퍼가 없다는 것에 주목하세요.

만약 단어 한 개가 아닌 모든 줄을 읽고싶다면 이렇게도 할 수 있습니다.


#include<iostream> #include<string> using namespace std; int main() { cout << "Please enter a line:\n"; string s; getline(cin,s); cout << "You entered " << s << '\n'; }


잠깐 iostream과 string과 같은 표준 라이브러리 기능을 소개하자면, TC++PL3의 챕터 3을 확인하세요. 더 자세한 C와 C++의 입출력에 대한 간단한 비교는, 저의 publications list 에서 다운받을 수 있는 "Learning Standard C++ as a New Language"를 확인하세요




You can read a single, whitespace terminated word like this:

	#include<iostream>
	#include<string>
	using namespace std;

	int main()
	{
		cout << "Please enter a word:\n";

		string s;
		cin>>s;
	
		cout << "You entered " << s << '\n';
	}

Note that there is no explicit memory management and no fixed-sized buffer that you could possibly overflow.

If you really need a whole line (and not just a single word) you can do this:

	#include<iostream>
	#include<string>
	using namespace std;

	int main()
	{
		cout << "Please enter a line:\n";

		string s;
		getline(cin,s);
	
		cout << "You entered " << s << '\n';
	}

For a brief introduction to standard library facilities, such as iostream and string, see Chaper 3 of TC++PL3 (available online). For a detailed comparison of simple uses of C and C++ I/O, see "Learning Standard C++ as a New Language", which you can download from mypublications list


댓글