C++ 기초 namespace / 입출력 / 문자열

jaeha_lee·2022년 5월 13일
0

namespace

  • namespace라는 문법을 사용하면 관련된 코드를 묶어서 관리할 수 있음

  • namespace 접근 3가지 방법

    namespace Test{
        void init() {printf("Test. Init func");}
    }
    • qualified name(완전한 이름) 사용
      Test::init();
    • using declaration(선언)
      using Test::init();
      init();
    • using directive(지시어) 사용
      //Test 안의 모든 함수를 "Audio::" 없이 사용 가능
      using namespace Test;
      init();
  • global namespace - 특정한 이름 공간에 포함되지 않는 공간

    
    namespace Test1{void init(){};}	#1
    namespace Test2{void init(){};}	#2
    void init(){};					#3
    int main(){
    	Test1::init();
       Test2::init();
       
       using Test2:init();
       ::init();			// ::는 global을 의미함 #3 호출
       init();				// #2 호출
    }
    
  • init() - 열려 있는 namespace 검색 / global namespace 검색

  • ::init() - global namespace 검색 / global init( )이 없는 경우 에러

  • using declaration을 함수 밖에서 사용하면

    • using 선언 아래 있는 모든 함수에서 이름 없이 접근 가능
    • global namespace에 동일 이름의 함수가 있으면 compile 에러
    • global naemspace에 동일 이름의 함수가 없으면 init( ), ::init( ) 모두 Test::init( )으로 호출 가능

입출력

  • 16진수 출력 및 빈칸 다르게 채워서 출력하기
#include <iostream>
#include <iomanip>

int main(){
	int n = 10;
    std::cout << n << std::endl;
    
    // %x 16진수
    std::cout << std::hex << n << std::endl;
    
    // %d 10진수
    std::cout << std::dec << n << std::endl;
    
    // %10d setw 문자열 출력 개수 지정
    std::cout << std::setw(10) << n << std::endl;
    std::cout << std::setw(10) << std::setfill("#") << std::endl;
    std::cout << std::setw(10) << std::setfill("#") << std::left << std::endl;
}

namespace 중첩

  • namespace는 중첩이 가능하다.
  • ex)
// filesystem namespace의 경우, 아래 처럼 중첩해서 쓸 수 있다.
std::filesystem::create_directory("./");

// 이런 경우 너무 길면, 아래와 같이 사용 가능
name space fs = std::filesystem;
fs::create_directory("./");

Using

  • typedef : type에 대한 별칭
  • Using : type에 대한 별칭 + template에 대한 별칭

문자열

  • C언어에서는 문자열을 담는 자료형이 없음

  • C++에서는 STL이 제공하는 문자열 타입 제공

    #include <string>
    int main(){
       std::string s1 = "abcd";
    
    }

변수 타입

int main(){
	long long n = 10; // c++11 부터 64 비트 정수를 표현할 수 있는 자료형이 생김
    int n1 = 0b10000 // 2진수 표기법
    int n2 = 1'000'000 // digit separator
    
    int* p1 = 0;
    int* p2 = nullptr;
}

0개의 댓글