C++/STL

[C++ String] raw String

sseram 2023. 2. 27. 22:47
반응형

C++11 ~

 

 

사용법 : R"( [표현할 문자열] )"

 

 

#include <iostream>
#include <string>

using namespace std;

int main() {

    string someStr = "aaa\na";
    string someRawStr = R"(aaa\na)";

    cout << "1 : [" << someStr << "]" << endl;

    cout << "2 : [" << someRawStr << "]" << endl;

    return 0;
}

 

 

다음과 같이 "" 내부에 있는 문자열을 특수문제 무시하고 그대로 표현이 가능하다.

 

만약... R"( )" 이라는 문자를 그대로 표현하고 싶다면 어떻게 해야 할까?

 

#include <iostream>
#include <string>

using namespace std;

int main() {

    string someStr = "aaa\na";
    string someRawStr = R"(aaa\na)";
    string someRawStr2 = R"w(aaR"(a\n")a)w";


    cout << "1 : [" << someStr << "]" << endl;

    cout << "2 : [" << someRawStr << "]" << endl;

    cout << "3 : [" << someRawStr2 << "]" << endl;

    return 0;
}

 

 

 

이런 식으로 "와 ( 사이에 내가 원하는 문자 하나를 넣어 주고, 닫을때 해당 문자를 다시 넣어 주면

cpp는 해당 것을 raw string 문자열의 시작과 끝으로 인식한다!

 

 

 

그동안 몇몇의 특수문자들을 표현하기 위해선 앞에 \를 하나 더 붙여서 표현해 주곤 했는데,

ex) string file_path = "c:\\Downloads\\~~.txt";

 

이제 헷갈릴 필요 없이 raw string을 쓰면 간단하게 해결 가능하다!

 

string file_path = R"(c::\Downloads\~~.txt)";

반응형