용's
[C++] 문자열 입력받기(char *), char* 길이 구하기 본문
오랜만에 C++ 다시 할려니 정말 기초적인 부분에서 까먹은 부분이 너무 많음.
1. char* 타입으로 바로 cin 을 통해 문자열을 입력받을려고 하니 오류가 발생.
=> char*으로는 바로 입력을 받을 수 없고, char* str = "asdasd" 로 바로 초기화는 가능
=> char str[] 형태로 선언하고 cin으로 입력 받을 수 있음
=> cin으로 입력하면, 배열의 크기와 상관없이 내가 입력이 끝난 다음 '\0'가 마지막 문자 다음에 추가 되는듯... (무조건 배열의 가장 끝에 생성되는 줄....)
2. 포인터의 size는 타입에 상관없이 4바이트 임(주소값)
//reverse string 하는 메소드 작성하기(어떠한 자료구조를 사용하지 않고)
//만약에 자료구조 사용가능하면 스택으로 완전 간단히 구현 가능할 듯
class reverseStr{
public:
int length;
reverseStr(){
length = 0;
}
void Solution(char* str){
calLength(str);
for (int i = 1; i < length; i++){
int right = length - i;
int left = i-1;
if (right <= left) //여기서 right==left로 조건을 걸면 문자열의 길이가 짝수 일 경우 문제 발생
break;
else{
Swap(str, right, left);
}
}
}
private:
void calLength(char* str){
char* p_str = str;
while (1){
if (*p_str == '\0')
break;
else{
length++;
p_str++;
}
}
}
void Swap(char* str, int right, int left){
char temp = str[right];
str[right] = str[left];
str[left] = temp;
}
};
'Computer Science > Coding Tips' 카테고리의 다른 글
[C++] 순열 만들기 (0) | 2015.10.12 |
---|---|
[LeetCode] Add Two Numbers (0) | 2015.08.10 |
[C++] 배열 전체 한번에 초기화 (0) | 2015.05.26 |