C 및 C++의 탭 문자를 이스케이프해야 합니까?
및 기타 언어 9는 C++( 「」)로 .'\t'
★★★★★★★★★★★★★★★★★」"\t"
저는 스트링 tabulator 하고 있습니다. 예를 , unescapeed characcepted unscapeed tabulator )."A B"
.A
★★★★★★★★★★★★★★★★★」B
clang쓰지 것 .- clang++는 clang++라는 .- clang++는 clang++라는 문자열입니다"A\tB"
소스코드에서 길게 들여쓰기된 여러 줄 문자열이 더 읽기 쉽기 때문에 에스케이프되지 않은 버전이 더 좋습니다.
현재 저는 이것이 일반적으로 C와 C++에서 합법적인 것인지 아니면 제 컴파일러에서만 지원되는 것인지 자문하고 있습니다.문자 및 문자열 상수로 이스케이프되지 않은 탭레이터를 얼마나 이식할 수 있습니까?
놀랍게도 구글에서도 스택오버플로우에서도 간단해 보이는 이 질문에 대한 답을 찾을 수 없었다.
네, 적어도 C++11에 따라 문자열 또는 문자 리터럴에 탭 문자를 포함할 수 있습니다.사용할 수 있는 문자는 다음과 같습니다(강조합니다).
이중 문자 집합을 제외한 소스 문자 집합의 구성원
"
, ""\
new-line (새줄 문자
소스 문자 세트에는 다음이 포함됩니다.
공백 문자, 수평 탭, 수직 탭, 폼 피드 및 줄 바꿈을 나타내는 제어 문자, 그리고 다음 91개의 그래픽 문자
업데이트: 두 가지 언어에 대해 질문하신 것을 방금 알았습니다.C99의 경우 답변도 '그렇다'입니다.표현은 다르지만 기본적으로 같은 것을 말합니다.
문자 상수 또는 문자열 리터럴에서 실행 문자 집합의 구성원은 소스 문자 집합 또는 [...]의 대응하는 구성원으로 표현되어야 한다.
여기서 소스 및 실행 문자 집합은 모두 다음을 포함합니다.
수평 탭, 수직 탭 및 폼 피드를 나타내는 제어 문자를 지정합니다.
탭 문자를 문자열 또는 문자 리터럴에 직접 입력하는 것은 완전히 합법입니다.C 및 C++ 규격에서는 소스 문자 세트에 탭 문자를 포함해야 합니다.문자열 및 문자 리터럴에는 백슬래시, 따옴표 또는 아포스트로피(필요에 따라) 및 줄바꿈을 제외한 모든 문자를 포함할 수 있습니다.
휴대할 수 있습니다.그러나 독자가 다른 종류의 여백을 구별할 수 있는 방법이 없기 때문에 좋은 생각은 아니다.또한 텍스트 편집기, 메일 프로그램 등이 탭을 다시 포맷하는 것이 매우 일반적이므로 이러한 작업 과정에서 프로그램에 버그가 발생할 수 있습니다.
입력에 탭을 입력하면 문자열은 리터럴 탭 문자를 포함하며 탭 문자는 그대로 유지되며 마법처럼 변환되지 않습니다.\t
내부적으로
코드 쓰기도 마찬가지입니다. 문자열에 리터럴 탭 문자를 포함할 수 있습니다.단, 다음 사항을 고려하십시오.
T T T <--tab stops
012345012345012345012345
foo1 = 'a\tb';
foo2 = 'a b'; // pressed tab in the editor
foo3 = 'a b'; // hit space twice in the editor
사이 공백에 커서를 넣지 않는 한a
그리고.b
몇 글자가 들어가 있는지 확인했지만 탭이나 실제 공백 문자가 들어가 있는지 확인할 수 있는 방법은 없습니다.단,\t
탭으로 표시됩니다.
Tab 키를 누르면 해당 키가 매핑된 코드 포인트가 표시됩니다.이 코드 포인트는 프로그램이 실행되는 시스템의 탭일 수도 있고 아닐 수도 있습니다.리터럴에 \t를 입력하면 컴파일러는 이를 타깃시스템에 적합한 코드 포인트로 치환합니다.따라서 프로그램이 실행되고 있는 시스템에서 탭이 표시되는지 확인하려면 \t를 사용합니다.그게 그들의 일이야.
언급URL : https://stackoverflow.com/questions/28900842/is-it-mandatory-to-escape-tabulator-characters-in-c-and-c
'IT' 카테고리의 다른 글
CreateProcess 오류=main() 메서드를 실행할 때 파일 이름 또는 확장자가 너무 깁니다. (0) | 2023.01.15 |
---|---|
LUMEN : SQLSTATE [ 42000 ]를 수정하는 방법:구문 오류 또는 액세스 위반: larabel lumen에서 1071 (0) | 2023.01.15 |
LEFT JOIN의 LIMIT 사용방법 (0) | 2023.01.15 |
개체를 포함하는 두 어레이를 병합하고 중복된 값을 제거합니다. (0) | 2023.01.12 |
PHP에서 두 날짜를 비교하려면 어떻게 해야 하나요? (0) | 2023.01.12 |