как печатать \ "на С ++ - PullRequest
       31

как печатать \ "на С ++

4 голосов
/ 06 ноября 2011

Мне нужно напечатать строку, которая точно говорит:

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

По сути, мне нужно сделать это, потому что я использую код C ++ для генерации кода C ++.

Я хочу написатьприведенная выше строка через ofstream, так что-то вроде

 ofstream fout;
 fout << the_string << endl;

Проблема в том, что я не могу сделать \\" внутри строки.

Ответы [ 4 ]

5 голосов
/ 06 ноября 2011

Просто избегайте косой черты , а также кавычек! То есть \" -> \\\"

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 голос
/ 06 ноября 2011

Это работает:

#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 голосов
/ 06 ноября 2011

Возможно, вы захотите добавить дополнительный символ "/", потому что одиночный символ "/" не будет анализироваться как строка. Я думаю, что это должно работать (я парень по Java / C #, и я столкнулся с этой проблемой сам пару раз).

0 голосов
/ 06 ноября 2011

Надеюсь, я правильно понял ваш вопрос:

Побег \ и побег ":

\\\"

...