C++/문제풀이
[C++] 문자열을 입력받아서 문자열에 포함된 모든 공백 문자를 삭제하는 프로그램
year.number
2022. 6. 15. 08:16
Power C++ p.296 12번
문자열을 입력으로 받아서 문자열에 포함된 모든 공백 문자를 삭제하는 코드를 작성해보자.
#include <iostream>
#include <cstring>
using namespace std;
// p.296 12번) 문자열을 입력으로 받아서 문자열에 포함된 모든 공백 문자를 삭제하는 코드를 작성해보자.
int main(){
// 루핑을 돌며 맨 뒤에서부터 감소하다가 공백 문자를 만나면 앞으로 땡겨진다.
cout << "\n\n공백 제거" << endl;
char sentence[81];
cout << "문장을 입력하세요: ";
// cin >> sentence; //단어 입력 OK, 문장입력 => 공백 문자 처리 불가(cin 객체)
cin.getline(sentence, 81);
//1. 문자열 맨 끝의 길이: 문자열의 length 구하기
int length = strlen(sentence);
cout << "입력된 문자열: " << sentence << endl;
//2. 문자열 맨 끝에서부터 루핑을 돌면서 공백 탐지 -> 공백 발견 시 왼쪽으로 하나씩 이동
for (int i = length; i>=0; i--){
if (sentence[i] == ' ')
for(int j = i; j < length; j++)
sentence[j] = sentence[j+1];
}
cout << "공백이 제거된 문자열: " << sentence << endl;
return 0;
}
실행 결과
Key Point
1. 문자열 라이브러리 사용을 위해 #include <cstring> 추가
2.cin 객체 -> 단어 입력 OK, 문장입력 => 공백 문자 처리 불가
cin.getline(sentence, 81);으로 처리
3. 알고리즘
(1) 문자열 맨 끝의 길이 구하기 (문자열의 length 구하기)
strlen()이용
(2) 문자열 맨 끝에서부터 루핑을 돌면서 공백 탐지 -> 공백 발견 시 왼쪽으로 하나씩 이동
for (int i = length; i>=0; i--){
if (sentence[i] == ' ')
for(int j = i; j < length; j++)
sentence[j] = sentence[j+1]; // j+1번째에 있는 문자를 j번째(왼쪽으)로 이동
}