我有這樣一個定義,包括路徑(沒有轉義序列):在預處理定義字符替換
// Incorrect
#define PATH "c:\blah\blah\file.cfg"
我寧願喜歡它,因爲這:
// Corrected
#define PATH "c:\\blah\\blah\\file.cfg"
雖然很遺憾我無法修改宏定義(實際上是生成包含宏的源的腳本...),除了添加前綴之外。現在我需要打開此路徑中給出的文件。我想C++ 11個的原始字符串字面量是這樣的:
// Modified definition
#define PATH R"c:\blah\blah\file.cfg"
std::ifstream(PATH); // error: unrecognised escape sequence
現在的問題是如何使用宏替換所有\
?
註釋(如果事情確實):
編譯器:MSVC 14.0
操作系統:Windows 7
\等等實際上是\ B,接着啦。這完全是一個不同的性格。沒有辦法從\\ –
如果您完全可以控制您的構建系統,那麼在運行編譯器之前對代碼生成腳本的輸出進行後處理可能會更容易。 –
更正腳本將是最好的解決方案,如果這是不可能的,後處理是下一個最好的解決方案恕我直言 –