[c++] string(문자열) 본문

객체지향프로그래밍 (C++)

[c++] string(문자열)

미니모아 2020. 7. 6. 14:57
반응형

c++ style string

    string src = "Hello World";
    string dest;

    cout << src.size() << endl;
    dest = src;

    cout << src << endl;
    cout << dest << endl;
  1. c style vs c++ style 문자열 결합,비교

     //c style
     char str1[10] = "I";
     char str2[] = "J";
    
     cout << strcat(str1, str2) << endl;
     if (strcmp(str1, str2) == 0)
         cout << "같다" << endl;
    
     else {
         cout << "다르다" << endl;
         cout << strcmp(str1, str2) << endl; // 1 or -1 (뒤의 순서가 더 늦을때)
     }
     return 0;
    
     //c++ sylte
     string str1 = "Inha";
     string str2 = "Inha";
    
     if (str1 == str2) {
         cout << "같다" << endl;
         cout << typeid((str1 == str2)).name() << endl;
     }
     else {
         cout << "다르다" << endl;
         cout << (str1 == str2) << endl;
     }
    
     cout << str1 + str2 << endl;
     cout << str1 << endl;
     cout << str2 << endl;
  • c style -> c++ style

      char cstyle[] = "Hi~";
      string cppstyle;
      cppstyle = cstyle;//묵시적 캐스팅
      cppstyle[0] = 'A';//별도의 메모리를 갖는다.
      cout << cstyle << endl; // Hi~
      cout << cppstyle << endl;//Ai~
  • c++ style - > c style (완벽히 복사하여 수정 가능하게 함)

      string cppstyle = "Hell!";
      char* cstyle = new char[cppstyle.size()+1];
    
      strcpy(cstyle, cppstyle.c_str());
      cstyle[0] = 'Y';
    
      cout << cstyle << endl;
      cout << cppstyle << endl;
    
      delete[] cstyle;
      cstyle = NULL;
  • c++ style -> c style (읽기 전용)

      string cppstyle = "Hell!";
      const char* cstyle = NULL;
    
      cstyle = cppstyle.c_str();//string 객체 멤버 함수 : 읽어오기만 가능
    
      cout << cstyle << endl;
      cout << cppstyle << endl;
  1. string 기능들
  • find : 문자열 찾고 index 리턴

      string str = "Hi, Havard Univ.";
      cout << str.find("Havard") << endl;
  • substr : 문자열 자르기

      string str = "Hi, Havard Univ.";
      string capture = str.substr(4, 4);
      cout << capture << endl;
  1. 문자열 입력

     #include <string>
     #inlcude <iostream>
     int main(){
       char cstyle[3];
       string cppstyle;
    
       // cin으로만 문자열을 입력 받을 경우 문제 
       // 1. 띄어쓰기만으로 구분 되어 버림
       // 2. 문자열 범위를 벗어나도 입력 받고 에러뜸 
       cin >> cstyle;
       cin >> cppstyle; 
       cin.getline(cstyle, 3); // c style
       cin.clear();//널문자 포함 3개 문자만 cstyle로 들어감
       getline(cin, cppstyle);//c++ style
    
       cout << cstyle << endl;
       cout << cppstyle << endl;
       return 0;
     }
반응형
Comments