Стенографический литералы в управляемом C ++? (Например, „л“ С # @)

голоса
8

Есть ли способ использовать дословные литералы String, в управляемом C ++? Подобно С #

String Docs = @c:\documents and settings\
Задан 09/12/2008 в 17:52
источник пользователем
На других языках...                            


3 ответов

голоса
9

в C ++ 11, есть сырые строковый литерал:

cout<<R"((\"ddd\aa)\n)"<<endl;
cout<<R"delimiter((\"ddd\aa)\n)delimiter"<<endl;

Выход:

(\"ddd\aa)\n
(\"ddd\aa)\n
Ответил 04/03/2013 в 13:20
источник пользователем

голоса
6

Это не возможно в настоящее время. Managed C ++ строковые литералы имеют почти те же правила, как нормальные строки C ++. Управляемая спецификации C ++ является на самом деле просто увеличение стандарту ANSI C ++.

В настоящее время нет никакой поддержки для C # стиля буквального синтаксиса в C ++ (управляемый или нет). Вы должны вручную избежать каждого символа.

Смотрите раздел 9.1.3.3 в спецификации C ++ / CLI для более подробной информации. ( Spec Link)

Ответил 09/12/2008 в 18:12
источник пользователем

голоса
3

Хотя не совсем так немногословен, как «@» C # дословных строковый литерал, следующий делает компилировать / обнуление: чистым, так что вы можете использовать C ++ Raw строковых литералов для чистого MSIL и аналогичного результата:

String^ f = gcnew String(R"(C:\foo\bar.txt)");

Сырые строковые литералы могут быть использованы в обычном C ++ также:

char *x = R"(C:\foo\bar.txt)";

Google «MSDN C ++ Строковые литералы» для получения дополнительной информации

Ответил 09/10/2014 в 18:55
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more