можно ли вводить строку (CString, char *) так чтобы форматирование не учитывалось. Т.е.
CString str;
str = " One \n two"; // получается что два символа '\' и 'n' не будут отображаться, а вот как это сделать? может макрос есть какой, который делает так чтобы символы форматирования убирались? Хелп.
Здравствуйте, dedivan, Вы писали:
D>можно ли вводить строку (CString, char *) так чтобы форматирование не учитывалось. Т.е.
D>CString str;
D>str = " One \n two"; // получается что два символа '\' и 'n' не будут отображаться, а вот как это сделать? может макрос есть какой, который делает так чтобы символы форматирования убирались? Хелп.
str = " One \\n two"
Если идет двойной бекслеш, он преобразуется в одинарный и следующий за ним символ (в данном случае "n") считается обычным символом.
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Здравствуйте, ekamaloff, Вы писали:
<>
Советую
внимательно прочитать эту статью:
Escape Sequences, там есть ответ и на твой вопрос.
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
так оно так. добавление слешей это выход известный, но видимо я несколько не так поставил вопрос. хотелось бы иметь некоторый макрос, который сам бы из эскейп последовательностей делал бы символы печатные.
printf MAKROS("One \n two");
Получится на экране: "One
two";
А надо чтобы на экране: "One \n two"
Здравствуйте, dedivan, Вы писали:
<>
Тогда только написать функцию, делающюю это преобразование:
CString UnEscapeStr(CString s)
{
s.Replace(TEXT("\n"), TEXT("\\n"));
s.Replace(TEXT("\r"), TEXT("\\r"));
s.Replace(TEXT("\a"), TEXT("\\a"));
s.Replace(TEXT("\b"), TEXT("\\b"));
s.Replace(TEXT("\f"), TEXT("\\f"));
s.Replace(TEXT("\t"), TEXT("\\t"));
// ...
return s;
}
// ...
printf(UnEscapeStr(TEXT("some \t string\rwith escape sequences\n")));
По простому по-моему никак
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde