如何在C++中打印\"

how to print " in C++

本文关键字:打印 C++      更新时间:2023-10-16

我需要打印一个字符串,确切地说:

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

基本上,我需要这样做,因为我正在使用c++代码来生成c++代码。

我想通过ofstream写入上面的字符串,所以像

 ofstream fout;
 fout << the_string << endl;

问题是我不能在字符串内做\"

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

fout << "std::string("-I\"/path/to/dir\" ");" << std::endl;
在c++ 0 x

/c++ 11

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

它使用一个原始字符串<一口> 1

查看两个版本的实时测试:http://ideone.com/TgtZK  

1毫不奇怪,ideone.com和stackoverflow的语法高亮还没有准备好:)

这行得通:

#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" ");

关键是:你需要转义斜杠和引号

我希望我正确理解了你的问题:

Escape and Escape ":

\"

您可能想要尝试添加额外的"/"字符,因为单个"/"将不会被解析为字符串。我认为它应该工作(我是Java/c#的家伙,我自己也遇到过这个问题几次)。

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

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

输出为:

/! warning/!→1

/! warning/!→2