C ++ 문자열을 여러 줄로 분할 (파싱이 아닌 코드 구문)
현명하게 구문 분석하는 문자열을 분할하는 방법과 혼동하지 마십시오. 예 :
C ++에서 문자열 분할?
C ++에서 문자열을 여러 줄로 분할하는 방법에 대해 약간 혼란 스럽습니다.
간단한 질문처럼 들리지만 다음 예를 들어 보겠습니다.
#include <iostream>
#include <string>
main() {
//Gives error
std::string my_val ="Hello world, this is an overly long string to have" +
" on just one line";
std::cout << "My Val is : " << my_val << std::endl;
//Gives error
std::string my_val ="Hello world, this is an overly long string to have" &
" on just one line";
std::cout << "My Val is : " << my_val << std::endl;
}
나는 std::string
append()
방법을 사용할 수 있다는 것을 알고 있지만, C ++의 문자열을 여러 줄로 나누는 방법이 더 짧고 / 더 우아한 (예 : 더 pythonlike, 분명히 트리플 따옴표 등은 C ++에서 지원되지 않음) 방법이 있는지 궁금합니다. 가독성.
이것이 특히 바람직한 곳은 긴 문자열 리터럴을 함수 (예 : 문장)에 전달할 때입니다.
문자열 사이에 아무것도 넣지 마십시오. C ++ 렉싱 단계의 일부는 인접한 문자열 리터럴 (줄 바꿈 및 주석을 통해)을 단일 리터럴로 결합하는 것입니다.
#include <iostream>
#include <string>
main() {
std::string my_val ="Hello world, this is an overly long string to have"
" on just one line";
std::cout << "My Val is : " << my_val << std::endl;
}
리터럴에 개행을 원하면 직접 추가해야합니다.
#include <iostream>
#include <string>
main() {
std::string my_val ="This string gets displayed over\n"
"two lines when sent to cout.";
std::cout << "My Val is : " << my_val << std::endl;
}
#define
d 정수 상수를 리터럴 에 혼합 하려면 몇 가지 매크로를 사용해야합니다.
#include <iostream>
using namespace std;
#define TWO 2
#define XSTRINGIFY(s) #s
#define STRINGIFY(s) XSTRINGIFY(s)
int main(int argc, char* argv[])
{
std::cout << "abc" // Outputs "abc2DEF"
STRINGIFY(TWO)
"DEF" << endl;
std::cout << "abc" // Outputs "abcTWODEF"
XSTRINGIFY(TWO)
"DEF" << endl;
}
stringify 프로세서 연산자가 작동하는 방식으로 인해 이상한 점이 있으므로 실제 값을 TWO
문자열 리터럴로 만들 려면 두 가지 수준의 매크로가 필요 합니다.
둘 다 리터럴입니까? 공백으로 두 개의 문자열 리터럴을 분리하는 것은 연결 "abc" "123"
과 동일합니다 "abc123"
. 이것은 C ++뿐만 아니라 스트레이트 C에도 적용됩니다.
I don't know if it is an extension in GCC or if it is standard, but it appears you can continue a string literal by ending the line with a backslash (just as most types of lines can be extended in this manor in C++, e.g. a macro spanning multiple lines).
#include <iostream>
#include <string>
int main ()
{
std::string str = "hello world\
this seems to work";
std::cout << str;
return 0;
}
'developer tip' 카테고리의 다른 글
Python 2.5에서 사용할 수있는 JSON 모듈은 무엇입니까? (0) | 2020.11.24 |
---|---|
WHERE col IN (…) 조건에 대한 제한 (0) | 2020.11.24 |
Maven : 플러그인 설명자 오류 검색 실패 (0) | 2020.11.24 |
구글 크롬 북마크 기능 (0) | 2020.11.24 |
Pandas 데이터 프레임에서 None을 NaN으로 바꿉니다. (0) | 2020.11.24 |