반응형
이번 글을 통해 배워갈 내용
- char 배열을 통해 문자를 뒤집어 보고
- 스트링 stl를 통해 문자를 뒤집어 보겠습니다.
"Hello" 라는 단어는 6개의 문자로 이루어져 있습니다.
이 단어를 뒤집으면
"olleH" 가 됩니다.
자 그럼
컴퓨터로 한번 프로그래밍 해보겠습니다.
#include <iostream>
#include <cstring>
using namespace std;
char* reverseString(char Arr[]);
const int findLength(char Arr[])
{
int count = 0;
for (int i = 0; Arr[i] != '\0'; i++)
{
count++;
}
return count;
}
char* reverseString(char Arr[])
{
int length = findLength(Arr);
for (int i = 0; i<= length/2; i++)
{
char temp = Arr[i];
Arr[i] = Arr[length - 1 -i];
Arr[length - 1 - i] = temp;
}
return Arr;
}
int main()
{
char myStr[] = "hello";
std::cout << reverseString(myStr) << endl;
return 0;
}
위에 코드를 설명하자면
main 함수에서
myStr 이라는 캐릭터 배열 선언 후에
"hello" 스트링을 할당해줍니다.
그뒤
제가 만든 reverseString 함수에 myStr을 인자값으로 넣고
스트링의 길이를 구합니다
길이를 구하는 함수에 대한 설명은 아래 링크를 참조해주시면 됩니다.
https://codemasterkimc.tistory.com/32?category=952163
길이를 구한뒤
길이의 반만큼 for문을 돌려서
해당되는 값을 바꿔줍니다
위에 이미지 처럼
i 가 0일때
시작되는 H 와
마지막 (length - i)의 o를 바꿔주고
e 와 l 을 바꿔 줍니다.
결과는
"olleh" 입니다.
"abcdefghijklmnop"같이 긴 문자를 입력해도
정상 적으로 뒤집은 문자가 나옵니다.
아스키 코드를 기준으로 만들었기 때문에 유니코드에서는 버퍼 사이즈가 달라서 답이 나오지 않습니다.
캐릭터 배열이 아니고 스트링을 쓴다면 reverse() 함수를 통해 위에 식을 두줄로 끝낼수 있습니다.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string str = "hello";
reverse(str.begin(), str.end());
cout << str << endl;
return 0;
}
결과
olleh
오늘도 즐거운 코딩하시길 바랍니다 ~ :)
참조 및 인용
C++ Primer
반응형
'C++ > C++ 기타' 카테고리의 다른 글
C++ 맵에 대한 정의, 키로값찾기, 값으로키찾기, 시간복잡도 (1) | 2021.07.08 |
---|---|
C++ 아스키 코드 영문 모음, 자음, 단어 갯수 세기 (1) | 2021.07.03 |
C++ 아스키 코드 영어 단어 길이 구해보기 (1) | 2021.07.03 |
C++ 실행중에 이중배열 크기를 정의 하고 사용하는 한가지 방법 (1) | 2021.07.02 |
C++ 동적으로 배열 크기를 늘리는 세가지 방법 (1) | 2021.06.21 |