【问题标题】:How to display relative file path in cout statement如何在 cout 语句中显示相对文件路径
【发布时间】:2020-07-23 14:34:33
【问题描述】:

我试图在 cout 语句中显示我的程序文件的相对文件路径,以便它出现在屏幕上。这是我写下来的,但是计算机将反斜杠误认为是退出序列。它显示以下错误:

Fross12.cpp:62:12:警告:未知转义序列:'\C'

这是我正在编写的代码:

cout << "C:\COSC-1303\Assignment-12> Fross12.exe < big-coin-file.txt" << endl;

我想要的是让电脑显示以下内容:

C:\COSC-1303\Assignment-12> Fross12.exe

【问题讨论】:

标签: c++ file path cout


【解决方案1】:

要么使用\\ 转义反斜杠字符,因此它不会被特殊解释,只使用正斜杠/ - 适用于 Windows、Unix 和其他操作系统。

您也可以使用raw string literal,例如R"my_raw_str(C:\whatever)my_raw_str"

您也可以使用std::filesystem::path,它会为您处理所有细节。

【讨论】:

    【解决方案2】:

    在 C++(和大多数其他基于 C 的语言)中,\ 用于指示转义字符(例如 \r、\n、\t 等)。如果你想在你的字符串中有一个实际的“\”字符,你必须转义它:\.

    在您的情况下,代码应修改为: cout &lt;&lt; "C:\\COSC-1303\\Assignment-12&gt; Fross12.exe &lt; big-coin-file.txt" &lt;&lt; endl;

    从 C++11 开始,我们还可以使用原始字符串来处理字符串,而无需处理转义字符。 要创建原始字符串,请使用语法:R"(your_string_value)"。

    例如: cout &lt;&lt; R"(C:\COSC-1303\Assignment-12&gt; Fross12.exe &lt; big-coin-file.txt)" &lt;&lt; endl;

    【讨论】:

    • 最后一句错了。一旦它在一个字符串中就太晚了,转义处理已经完成并吃掉了反斜杠。双反斜杠只是源代码中的一个东西,而不是运行时字符串数据。
    • 很好地抓住了本。我完全错过了。我已经更新了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 2010-10-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多