1. 문제
4. string 클래스를 이용하여 사용자가 입력한 영문 한 줄을 문자열로 입력받고 거꾸로 출력하는 프로그램을 작성하라.
2. 결과
3. 코드
#include <iostream>
#include <string>
using namespace std;
int main() {
string s, first, last;
cout << "아래에 한 줄을 입력하세요.(exit를 입력하면 종료합니다)" << endl;
while(1) {
cout << ">>";
getline( cin, s);
if( s == "exit" ) break;
int len = s.size();
for(int i=0; i< len/2; i++ ) {
first = s.at(i);
last = s.at(len-1-i);
s.replace( i, 1, last );
s.replace( len-1-i, 1, first );
}
cout << s << endl;
}
}
4. 설명
string 변수 s, first, last 3개를 선언 합니다.
getline( cin, s)로 문자열을 입력받아 s에 저장합니다.
그 후 s가 "exit"가 아니라면 계속 진행하고 맞다면 break;로 while문을 종료합니다.
int len = s.size()로 문자열 s의 길이를 구합니다.
그 후 i=0; i< len/2; i++인 for문을 이용하여서 문자열을 반전 시킵니다.
->len이 홀수일 경우 len/2에서 데이터 손실이 발생하지만 가운데 글자는 옮기지 않아도 되므로 문제 없습니다.
first변수에는 앞쪽에서 바꿀 문자를 저장하고 last는 뒤쪽에서 바꿀 문자를 저장합니다.
※ s.replace( i, 1, last) : "인덱스 i부터 1개의 문자를 last로 바꾼다" 입니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 4장 6번 (0) | 2019.04.06 |
---|---|
명품 C++ programming 실습문제 4장 5번 (0) | 2019.04.06 |
명품 C++ programming 실습문제 4장 3번 (0) | 2019.04.06 |
명품 C++ programming 실습문제 4장 2번 (0) | 2019.04.06 |
명품 C++ programming 실습문제 4장 1번 (0) | 2019.04.06 |