namespace라는 문법을 사용하면 관련된 코드를 묶어서 관리할 수 있음
namespace 접근 3가지 방법
namespace Test{
void init() {printf("Test. Init func");}
}
Test::init();
using Test::init();
init();
//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을 함수 밖에서 사용하면
#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;
}
// filesystem namespace의 경우, 아래 처럼 중첩해서 쓸 수 있다.
std::filesystem::create_directory("./");
// 이런 경우 너무 길면, 아래와 같이 사용 가능
name space fs = std::filesystem;
fs::create_directory("./");
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;
}