2012-05-08 2 views
9

이스케이프 처리되지 않은 문자 시퀀스를 입력하는 가장 쉬운 방법은 무엇입니까 std::string? (이스케이프 문자를 올바르게 인해 작동하지 않습니다) 대신C++에서 std :: string을 이스케이프 문자없이 정의

std::string st = "C:\\program files\\myFile.txt"; 

무엇인가 등을

.

std::string st = "C:\program files\myFile.txt"; 
+0

어떻게 지었습니까? 내용을'.txt' 파일에 저장하고'Makefile' 규칙을 추가하여 .'h' 파일로 변환 할 수 있습니까? –

+0

@MikeSamuel, Visual Studio를 사용하고 있습니다. –

+0

downvoter가 질문에서 무엇이 잘못되었는지 설명 할 수 있습니까? –

답변

22

, 단지 사용하는 다른 방향 슬래시 (다시 전달?). Windows에서도 작동합니다.

std::string st = "C:/program files/myFile.txt"; 
+2

FFR, forward : /, back : \. – chris

+4

@chris : 고마워요.하지만 당신의 노력은 낭비입니다. 내 머리가 기억하기에 너무 중요하다고 생각하지 않기 때문에 다시 잊어 버릴 것입니다. –

+1

이것은 일부 파일 시스템 드라이버에서 항상 작동하지 않을 수도 있고 경로가 MAX_PATH보다 길고 확장 경로 접두어가 사용되는 경우 – paulm

0

C & C++는 단지 문자열을 탈출 \를 사용하여 지원하며, 당신은 그것을 사용해야합니다. 작업 할 경로가 많은 경우 편집기에서 열고 \를 \로 대량 대체하는 것이 좋습니다.

+5

참고 : juanchopanza의 대답을 읽고 원시 문자열 리터럴이 마침내 유령을 만들었습니다. –

52

당신은 C++ 11 raw string literals으로 작업을 수행 할 수 있습니다 파일 이름을

std::string st = R"(C:\program files\myFile.txt)"; 
+1

굉장합니다. 와이드 캐릭터 용 LR. 그리고 구문은 처음에는 문자열의 시작과 끝을 구분하는 문자가 이중 문자 시퀀스이기 때문에 혼란 스러웠습니다. "(... 그리고 나서 ...)" –

+1

이 구문은 역겨워합니다. 그()를 따옴표로 묶는 것이 누구의 밝은 아이디어입니까? 그리고 대체 버전 인 R "구분 기호 (delimiter)"는 훨씬 더 심각합니다. – Andrew

관련 문제