지나공 : 지식을 나누는 공간

C++ 한번에 한줄로 입력받기, 글자 수 왜 다른가 본문

Algorithm/C++ 노트

C++ 한번에 한줄로 입력받기, 글자 수 왜 다른가

해리리_ 2021. 1. 6. 10:28

띄어쓰기를 포함해서 원하는 글자 수 만큼 한줄로 한번에 입력받기

 

cin의 getline이나 fgets를 사용할 수 있는데 fgets가 좀 더 빠르다.

 

1. cin.getLine(저장할 문자열, 글자 수)

 

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

int main() {
	
	char chars[10];
	cin.getline(chars, 10);

	cout <<chars;
}

띄어쓰기 포함 10개를 입력했으나 하나가 빠진 채 출력된다.

 

띄어쓰기 포함 10글자를 입력했을 때 띄어쓰기 포함 9글자만 저장되어 출력된다.

 

문자열 마지막에 null 문자가 있기 때문이다.

"dddd dddd"(띄어쓰기 포함 9글자) + 문자열 마지막에 오는 null문자 = 총 10글자이다.

 

2. fgets 사용

 

fgets도 마찬가지로 null문자까지 포함해서 생각하므로 육안으로 띄어쓰기 포함 10글자를 입력하면 육안으로 9글자가 출력된다. null문자가 뒤에 숨어있으므로.

 

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

int main() {
	
	char chars[10];
	fgets(chars, 10, stdin);

	cout <<chars;
}
728x90
Comments