2019년 2월 23일 토요일

[C++] 문장 따옴표 앞의 R

-
일단, 여기에서 봤다.
http://www.cplusplus.com/doc/tutorial/introduction/codeblocks/

여기의 테스트용 간단한 예제 프로그램에 아래와 같이 적혀 있었다.

#include <iostream>
int main()
{
  auto x = R"(Hello world!)";
  std::cout << x;
}

문장 큰 따옴표 앞의 R 이것이 무엇인고?
_( 검색:    R before " in C++  )_ 했다.
https://stackoverflow.com/questions/34988122/is-the-r-before-string-cross-platform

C++11 이후부터 표준화 되어서 도입된 날것(Raw) 그대로의 문장을 지정하는 것이란다.
https://en.cppreference.com/w/cpp/language/string_literal

이것이 가진 효과는 ? 아래의 프로그램을 참고하자. x 는 R 이 붙은 것이고, y 는 R 이 없는 것이다.
그리고, R이 붙은 것에는 따옴표 안에 괄호들이 하나씩 있어야 한다는 것이다. 따옴표 내부의 따옴표에 붙은 괄호는 문자열에서는 없어진다.
R이 붙지 않은 것에는 따옴표 내부의 괄호들이 출력된다.


#include <iostream>

int main()
{
    auto x = R"(Hello world!\n \r my world\nhello. my work!)";
    auto y = "(Hello world!\n \r my world\nhello. my work!)";
    std::cout << x;  std::cout << x;
  std::cout << x;
  std::cout << y;
  std::cout << y;
  std::cout << y;
// 한글일 때에는 ....ㅇㅇㅇㅇㅇ...    알수가 없다.
// 어떤 것이 있는가
//     std::c
}

실행 결과는 다음과 같다.
.... 라고 하려다가, 호기롭게 했지만, 역시나, 내가 linux에 적응하지 못하는 부류인 관계로, linux/unix 터미널 창 제어를 못해서... 결과를 복사하지 못했다... Code::Block 환경 내에서는 실행이 잘 되는데, 왜 나는 할 수 없지?  sudo 등등을 써 봐도, ./(실행파일_이름) 등등 내가 예전에 알고 있던 별 수를 다 써 봐도 안되고.. 실행 파일이 없다는 황당한 메시지만 받고, ls 명령을 해 보면 현재 디렉토리에 분명히 실행권한이 있는 파일이 존재하는데, 실행하려고 하면 없다고...
역시 나는 ...  이런 모든 것을 만든 분들이 위대해 보일 따름이다.

결국 설명은... R이 따옴표 앞에 붙으면, 보통-괄호(중간-괄호 또는 대괄호가 아닌..) _가  따옴표 바로 내부에 붙어야 한다. 그럼, 괄호 자신과 큰 따옴표도 들어갈 수 있다는 것이겠지...
하여간 그러면, \r, \n 이것들이 모두 해석되어서 CR(Carriage Return) 동작이라든가 NL(New Line)동작으로 작동하는 것이 아닌, 그냥 화면에 소스코드에 나온 그대로 \r   로 표시되고, \n  으로 표시된다. \ 문자(back slash)의 C/C++ 언어에서의 특수 해석이 작동하지 않는다는 것이다.
반면에, R이 없는 경우에는 \r 은 커서를 줄의 첫 자리로 옮기고, \n 은 줄을 바꾸는 기능으로 변환해석되어서 작동한다.

조금만 더 예를 들면,
x = R"Hello(Hello( (my ("") \r \n one))Hello";
였다면, x가 출력될 때에는
Hello(my ("") \r \n one)
이 출력되는 것이다. 표현하고 싶은 문자열을 감싸는 경계표시는 시작부분이
R"Hello(     로 시작되고, )Hello"   로 끝나고 이 경계표시는 실제 문자열에는 포함되지 않는다. 이 처음 괄호가 시작되기 전에 들어가는 경계표시 문자열에는 공백문자(스페이스)가 들어가면 안된다.
-
-

2019년 2월 22일 금요일

eos (Endless OS _가 아닌 다른 것) 그리고, 객체지향 프로그래밍, UML

-
eos _를 찾았더니, 예상치 않게 다른 eos 가 걸려 나왔다.

https://medium.com/hexlant/eos-dawn-v4-0-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89-2-4-8ac29ad0f2ec

무슨 소리인가 했다. 요즘 세상에 관심거리였던, 이제는 실망거리이기도 한 비트코인과 관련된 블록체인 기술 소프트웨어였다.


https://saksin.tistory.com/1357

앞에는 맥OS에 설치하는 방법이었는데,
윈도(윈도10)에 설치하는 방법이 나오기도 했다. 그런데, 우분투를 먼저 윈도10에 설치하라는 재미있는 내용도 있었다.윈도10에 우분투라... MS 스토어였다.
https://www.microsoft.com/ko-kr/p/ubuntu/9nblggh4msv6?activetab=pivot%3Aoverviewtab
우분투의 console(terminal?)을 설치하는 것이라고 했다. ubuntu에서 사용하는 몇가지의 여러 shell 명령어를 사용할 수 있게 해 준단다. 모두가, 오래 전에 리눅스 등등의 open source unix 계열에 관심을 접었고 그 이후로 오랜 시간을 지낸 내게는 어리둥절한 혼돈스런 말들이었다. 모두가 뒤섞인다...

거기에는
https://saksin.tistory.com/921?category=405398
OOP _와 UML 등등의 내용도 있었다.
-
-
-