CafeM0ca

[C++11]배열과 문자열 본문

Programming/C++

[C++11]배열과 문자열

M0ca 2017. 11. 7. 23:13
반응형

배열 : 연속된 메모리


C++11에서 배열의 초기화

char s[] {"M0ca"}; //가능하다. 신기하군 


초기화 끝에 널문자가 들어가면 문자열

char s[] {'M','0','c','a'}; //문자열 x

char s[] {'M','0','c','a','\0'}; //문자열 o

char s[] = "M0ca"; // 문자열 상수(string literal)  자동으로 널문자 삽입

char s[100] = "M0ca"; //s[4]부터 널문자로 초기화


char asc='s'; //아스키코드 s


문자열이 너무 길 때

cout<< "The String is So long long. isn't it?"

cout<< "The String is So" "long long."

"isn't it?"

같은 표현이다. 화이트스페이스(빈칸,탭,캐리지리턴(커서의 위치를 맨 앞으로 이동))로 분리되어 있어도 하나의 문자열 상수로 결합됨.


문자열에서 널문자('\0')을 만나면 그 뒤의 메모리는 읽지 않는다.


cin.getline(char * str,size_t n) -> 한 번에 한 행을 읽기 

첫번째 인자에 문자의 주소. 두번째 인자에 읽을 크기. 개행을 읽을 때 까지 두번째 인자만큼 읽는다.

cin.getline(str1,n).cin.getline(str2,n);  //두 행을 읽어 각각 str1,str2에 저장


cin.get() -> cin.getline과 동일 

get메소드를 연달아 사용하면 문제가 생긴다.

cin.get(str,size);  //문제 없음

cin.get(str,size);  //앞서 한 행을 읽고 입력버퍼에 개행이 남아 있음 -> 개행을 만남 -> 원하던 작동이 아님

매개변수를 비워두면 문자 하나를 읽는다는 의미다.

cin.get(str,size) //문제없음 

cin.get()          //문자 하나를 읽어 처리  오버로딩됨

cin.get(str,size) //문제없음



(cin>>str).get() //str을 입력받고 cin객체를 리턴하고 get()을 호출한다. -> 앞서 cin을 사용해도 개행에 영향을 받지 않음.


접두어 - 문자열 앞에 붙는다.

u8-유니코드 문자를 나타내기 위함

cout << u8" 문자열 문자열 ";

R-raw(날 것)문자열. 사용법 : R(내용) , 문자셋(ex: +-".)으로 시작해서 문자셋(ex: ."-+)으로 끝나야한다.

cout <<R(" this is ". Not \" Only ") -> " this is ". Not \" Only "


반응형

'Programming > C++' 카테고리의 다른 글

[C++] 런타임 과정에서의 입력 값  (0) 2017.12.02
[C++]inline  (0) 2017.11.29
[C++]함수 포인터  (0) 2017.11.29
[C++]cctype 라이브러리  (0) 2017.11.08
[C++11]range for문  (0) 2017.11.08
Comments