Мне нужно сделать следующий код С# на С++ (если это возможно). Мне нужно создать длинную строку с множеством лишних цитат и других вещей в ней.
const String _literal = @"I can use "quotes" inside here";
Мне нужно сделать следующий код С# на С++ (если это возможно). Мне нужно создать длинную строку с множеством лишних цитат и других вещей в ней.
const String _literal = @"I can use "quotes" inside here";
Это не доступно в С++ 03 (текущий стандарт).
Это часть стандартного черновика С++ 0x, но пока недоступного.
Теперь вам просто нужно процитировать его явно:
const std::string _literal = "I have to escape my quotes in \"C++03\"";
Как только С++ 0x станет реальностью, вы сможете написать:
const std::string _literal = R"(but "C++0x" has raw string literals)";
и когда вам нужно )"
в вашем литеральном:
const std::string _literal = R"DELIM(more "(raw string)" fun)DELIM";
В С++ нет эквивалента С# "@". Единственный способ добиться этого - правильно вывести строку:
const char *_literal = "I can use \"quotes\" inside here";
В С++ нет строковых литералов. Вам нужно будет избежать строковых литералов.
std::string str = "I can use \"quotes\" inside here";
С++ 0x предлагает исходный строковый литерал, когда он доступен:
R"C:\mypath"
Кстати, вы не должны называть что-либо с лидирующим подчеркиванием, поскольку такие идентификаторы зарезервированы на С++.
В С++ такого механизма нет. Вы должны сделать это старомодным способом, используя экраны.
Возможно, вы сможете использовать язык сценариев, чтобы немного ускорить процесс ускорения. Например, оператор %Q
в Ruby вернет правильно экранированную строку с двойными кавычками, когда используется в irb
:
irb(main):003:0> %Q{hello "world" and stuff with tabs}
=> "hello \"world\" and stuff\twith\ttabs"