如何在C++中打印双引号"?

4
我需要打印一个精确说法为“”的字符串:
std::string("-I\"/path/to/dir\" ");

基本上,我之所以需要这么做,是因为我使用C ++代码生成C ++代码。我希望通过ofstream编写上述字符串,因此类似于:
 ofstream fout;
 fout << the_string << endl;

问题在于我不能在字符串中输入\\"


是的,你可以在字符串中使用\\。你为什么认为不能呢? - Griffin
如果你想要输入 ", 输入 \\\\# - Mateen Ulhaq
@muntoo:"\\\\#" 只会打印出 "\\#" 吗? - sehe
@sehe 在问题中会打印出 \\。(不包括代码标记。)现在的问题是,如何在注释中使用代码标记打印出 \\\\ 而不带额外的空格? - Mateen Ulhaq
5个回答

9

只需要转义斜杠以及引号!即 \" --> \\\"

fout << "std::string(\"-I\\\"/path/to/dir\\\" \");" << std::endl;

C++0x/C++11 中

fout << R"(std::string("-I\"/path/to/dir\" ");)" << std::endl;

这段代码使用了原始字符串字面值1

可以在http://ideone.com/TgtZK上实时测试两个版本

1很明显,ideone.com和stackoverflow的语法高亮器还没有为此做好准备 :)


1

这个有效:

#include <iostream>

using std::cout;
using std::endl;

int main() {
  cout << "std::string(\"-I\\\"/path/to/dir\\\" \");" << endl;
  return 0;
}

打印

std::string("-I\"/path/to/dir\" ");

重点是:你需要转义正斜杠和引号。

0
我希望我正确理解了你的问题:
转义反斜杠(\)和双引号("):
\\\"

0
你可能需要尝试添加额外的“/”字符,因为单个“/”将不会被解析为字符串。我认为它应该可以工作(我是Java/C#程序员,自己遇到过这个问题几次)。

0

这个可以作为标题问题的答案,即使它不是你的问题:

#include <iostream>
using namespace std;

int main(){
    std::string foo = string(" /!\\ WARNING /!\\ -> 1");
    cout << foo << endl;
    cout << " /!\\ WARNING /!\\ -> 2" << endl;
    return 0;
}

这个的输出是:

/!\ 警告 /!\ -> 1

/!\ 警告 /!\ -> 2


1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Paul Floyd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接