работа со строками
От: dedivan  
Дата: 17.03.06 06:58
Оценка:
можно ли вводить строку (CString, char *) так чтобы форматирование не учитывалось. Т.е.
CString str;
str = " One \n two"; // получается что два символа '\' и 'n' не будут отображаться, а вот как это сделать? может макрос есть какой, который делает так чтобы символы форматирования убирались? Хелп.
Re: работа со строками
От: ekamaloff Великобритания  
Дата: 17.03.06 07:01
Оценка:
Здравствуйте, 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
Re[2]: работа со строками
От: ekamaloff Великобритания  
Дата: 17.03.06 07:08
Оценка:
Здравствуйте, ekamaloff, Вы писали:

<>

Советую внимательно прочитать эту статью: Escape Sequences, там есть ответ и на твой вопрос.
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[3]: работа со строками
От: dedivan  
Дата: 17.03.06 07:33
Оценка:
так оно так. добавление слешей это выход известный, но видимо я несколько не так поставил вопрос. хотелось бы иметь некоторый макрос, который сам бы из эскейп последовательностей делал бы символы печатные.


printf MAKROS("One \n two");
Получится на экране: "One
two";

А надо чтобы на экране: "One \n two"
Re[4]: работа со строками
От: ekamaloff Великобритания  
Дата: 17.03.06 08:14
Оценка:
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.