Можно ли избежать двойных кавычек в буквальном строковом литерале?

Если вы хотите сказать

QStrign qs;
UnicodeString us(qs);

или

UnicodeString us;
QString qs(us);

, то нет, вы не можете этого сделать, если не можете изменить либо из классов. Конечно, вы можете ввести новую строку:

NewString ns;
UnicodeString us(ns);
QString qs(us);

NewString nsus(us);
NewString nsqs(qs);

Я не уверен в элегантности этого подхода, хотя по сравнению с вашими двумя явными функциями преобразования.

511
задан abatishchev 22 October 2014 в 20:35
поделиться

4 ответа

Используйте дублированные двойные кавычки.

@"this ""word"" is escaped";

выходы:

this "word" is escaped
859
ответ дан 22 November 2019 в 22:29
поделиться

Используйте двойные кавычки.

string foo = @"this ""word"" is escaped";
114
ответ дан 22 November 2019 в 22:29
поделиться

Для добавления дополнительной информации ваш пример будет работать без символа @ (он предотвращает экранирование с помощью \) следующим образом:

string foo = "this \"word\" is escaped!";

Он будет работать в обоих направлениях, но Я предпочитаю стиль двойных кавычек, чтобы упростить работу, например, с именами файлов (с большим количеством \ в строке).

95
ответ дан 22 November 2019 в 22:29
поделиться

Это должно помочь прояснить любые вопросы, которые могут у вас возникнуть: литералы c #

Вот таблица из связанного содержимого:

enter image description here

80
ответ дан 22 November 2019 в 22:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: