2012-05-16 3 views
-3
A="D:\Kursa4\a1\a1\test1.txt"; 
B="D:\Kursa4\a1\a1\test1.txt"; 
 
+  A "D:Kursa411 est1.txt" std::basic_string,std::allocator > 

+  B 0x0046cd0c "D:Kursa411 est1.txt" char * 

'\'기호 나는 그것이 char 또는 문자열을 할당 할 때 uncorected. '\'를 '/'로 바꿔야합니다 - 그러나 '\'라고 쓰면 - 아래에 텍스트가 표시됩니다잘못된 할당 기호는 char 또는 문자열로

이 형식의 파일 이름을 읽었습니다. 그리고/

ZeroMemory(&of, sizeof(OPENFILENAME)); 
    of.lStructSize = sizeof(OPENFILENAME); 
    of.Flags = OFN_FILEMUSTEXIST| OFN_EXPLORER | OFN_ENABLESIZING; 
    of.lCustData = (DWORD) NULL; 
    //of.hwndOwner = hWnd; 
    of.lpstrFilter = L"*.*"; 
    of.lpstrFile = (LPWSTR)fsFile; 
    of.nMaxFile = sizeof(fsFile); 
    of.nFilterIndex = 1; 
    of.lpstrFileTitle = NULL; 
    of.nMaxFileTitle = 0; 
    if(GetOpenFileName(&of) == TRUE) 
    { 
    //IDC_EDIT1 
    //HWND hwndEdit1 = GetDlgItem(hWnd,IDC_RADIO1); 
    SetWindowText(hwndEdit1, (LPCWSTR)fsFile); 
    } 

걸 원하는에 \를 대체 할 "D : \ Kursa4 \ A1 \ A1 \있는 test1.txt" "D : /Kursa4/a1/a1/test.txt"에서

char B = "D:/Kursa4/a1/a1/test.txt"; 

홈 메이크업?

char B = "D:\Kursa4\a1\a1\test1.txt"; 
+3

너 무슨 소리 야? –

+0

그건 C++처럼 보이지 않습니다. – abelenky

+0

@abelenky, 아래 코드는 실제로 C++이지만 Windows API입니다. – chris

답변

4

시도 :

C++ 소스 코드에서
A="D:\\Kursa4\\a1\\a1\\test1.txt"; 
B="D:\\Kursa4\\a1\\a1\\test1.txt"; 

\ 기호는 문자열의 다음 기호의 의미를 수정합니다. \t은 예를 들어 "가로 탭"을 의미하고 \n은 "새 줄"을 의미합니다.

실제 \ 문자를 삽입하려면 \\을 입력해야합니다.

+0

이 형식의 파일 이름을 읽었습니다 ... –

+0

@DEVIL .AFK, 뭐라구? – Griwes

1

귀하의 질문은 이해하기 어렵지만, 내가 본 것에서는 백 슬래시를 벗어나지 않았습니다.

는 사용

A="D:\\Kursa4\\a1\\a1\\test1.txt"; 
1

은 C++에서 (그리고 C에서) 문자열과 문자 리터럴에서 백 슬래시는 "문자를 이스케이프"입니다; 즉, 자신을 나타내지는 않지만, 다음에 나오는 문자 (대개 다음 문자이지만 때로는 )는 특별한 의미가 있다는 것을 이 알리는 것을 의미합니다. 그러므로. 문자열에서 두 문자 시퀀스 "\a"은 문자열 또는 문자 리터럴에서 문자 이 BAL 문자 (대부분의 인코딩에서 0x07)를 발생시키는 문자를 의미합니다. 물론 새 줄 문자는 "\n"이고 인용 문자는 "\""입니다. 탭 의 경우 "\t" 문자도 꽤 자주 나타납니다.

이렇게하면 문자열에 백 슬래시를 어떻게 삽입합니까? 리터럴. 대답은 다음과 같습니다. 을 직접 지정할 수없는 다른 문자를 삽입하는 것과 같은 방법입니다. 이스케이프 시퀀스가 ​​있습니다. 이 경우 "\\"입니다.

마지막으로 텍스트는 Windows 파일 이름과 같습니다. 어떤 경우에, 당신은 일 것이므로 '/'을 디렉토리 분리 기호로 사용하는 편이 나을 것입니다. 이 없으면 입력하고 입력하기가 훨씬 쉽습니다. 이스케이프 시퀀스를 사용할 필요가 없습니다. 디스플레이 목적을 위해, 당신은 std::replace와 빠른 패스가 표시 문자열을 수정합니다 (/\ Windows에서 작업 모두 알고하지 않을 수 있습니다) 이외의 프로그램 사용자를 혼란 걱정합니다.

관련 문제