용's

[C++] 문자열 입력받기(char *), char* 길이 구하기 본문

Computer Science/Coding Tips

[C++] 문자열 입력받기(char *), char* 길이 구하기

TaeYOng's 2015. 5. 27. 10:07

 

 

오랜만에 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
Comments