我對轉義字符「\」及其與windows文件系統的關係感到非常困惑。在下面的例子:有人可以解釋有關Windows文件系統的C++轉義字符「」嗎?
char* fwdslash = "c:/myfolder/myfile.txt";
char* backslash = "c:\myfolder\myfile.txt";
char* dblbackslash = "c:\\myfolder\\myfile.txt";
std::ifstream file(fwdslash); // Works
std::ifstream file(dblbackslash); // Works
std::ifstream file(backslash); // Doesn't work
我讓你在這裏做什麼轉義特殊字符,所以你可以在這個字符串中使用它。在沒有辦法通過放置一個反斜槓在字符串文本或std ::字符串你真的改變字符串---
---編輯:這是完全錯誤的,我的問題的根源---
因此,看起來轉義字符只能被某些類或事物處理爲除了反斜槓之外的其他內容,例如在控制檯上輸出,即std :: cout < <「\ hello」;將不打印反斜槓。在ifstream的情況下(或者我不確定是否同樣適用於C fopen()版本)),它必須是該類或函數將反斜槓視爲轉義字符。我想知道,因爲Windows文件系統使用反斜槓是不是有意義的,它接受帶反斜槓的簡單字符串,即「c:\ myfolder \ myfile.txt」?嘗試這種方式失敗。另外,在我的編譯器(Visual Studio)中,當我包含頭文件時,我可以使用。\和.. \來表示當前文件夾或父文件夾。我很確定在這裏與轉義字符無關,但是這些形式是Windows專用的,C預處理器的一部分還是C或C++語言的一部分?我知道反斜槓是Windows的東西,所以我看不到任何理由,即使在使用時,另一個系統會預期反斜槓。\和.. \
謝謝。
我現在看到,我太笨了。這就是我困惑的原因。我試圖刪除我的問題的一部分,但我不知道如何。也許我應該刪除它。 – Zebrafish
@斑胸魚通常你不應該刪除或破壞你的問題。其他人可能會擁有和你一樣的迷惑,你的問題和答案可以幫助他。 –
那麼。\和.. \ C預處理程序特定? – Zebrafish