"Компиляторный" формат строк
От: Ulfur Россия  
Дата: 24.08.06 10:43
Оценка:
Доброго времени суток!

Расшифровка сабжа: есть самая обычная ансишная строка, нужны функции которые могли бы переводить её в "компиляторный" формат, т.е. в формат вида "something string\r\nsecond line\r\npath: c:\\file.txt" (т.е. менять где нужно не печатаемые символы в нужный формат — '\r', '\n' etc) и обратно.
Есть ли стандартные функции позволяющие сделать это? Если нет, где можно найти?
Re: "Компиляторный" формат строк
От: Programmierer AG  
Дата: 24.08.06 10:51
Оценка:
Здравствуйте, Ulfur, Вы писали:

U>Доброго времени суток!


U>Расшифровка сабжа: есть самая обычная ансишная строка, нужны функции которые могли бы переводить её в "компиляторный" формат, т.е. в формат вида "something string\r\nsecond line\r\npath: c:\\file.txt" (т.е. менять где нужно не печатаемые символы в нужный формат — '\r', '\n' etc) и обратно.

U>Есть ли стандартные функции позволяющие сделать это? Если нет, где можно найти?
Ее можно написать . В общих чертах:
string escape(const string& s)
{
  ostringstream oss;
  for (size_t i=0; i<s.size(); ++i)
    switch ( s[i] )
    {
    case '\n': oss << "\\n"; break;
    case '\r': oss << "\\r"; break;
    /// .... all other cases
    default:   oss << s[i]; break;
    }
  return oss.str();
}
Re[2]: "Компиляторный" формат строк
От: Ulfur Россия  
Дата: 24.08.06 10:54
Оценка:
Здравствуйте, Programmierer AG, Вы писали:

PA>Здравствуйте, Ulfur, Вы писали:

...
PA>


Да это ясно, просто не хотелось опять изобретать велосипед...
Re[2]: "Компиляторный" формат строк
От: Ulfur Россия  
Дата: 24.08.06 11:05
Оценка:
Здравствуйте, Programmierer AG, Вы писали:

PA>Здравствуйте, Ulfur, Вы писали:

...
PA>

Да, и еще: в целом функции будут довольно громоздкими, особенно, если учесть, что нужно учесть именно все тонкости...
В функции обратной конвертации уже не написать так просто
Re[3]: "Компиляторный" формат строк
От: Programmierer AG  
Дата: 24.08.06 11:17
Оценка:
Здравствуйте, Ulfur, Вы писали:

U>Да, и еще: в целом функции будут довольно громоздкими, особенно, если учесть, что нужно учесть именно все тонкости...

U>В функции обратной конвертации уже не написать так просто

Какие тонкости? Все символы <32 имеют спец. обозначение, все символы >127 выводим в формате \xHH.
Конвертация обратно: при встрече обратного слэша — switch по следующему за ним символу.
Re[4]: "Компиляторный" формат строк
От: Sergey Россия  
Дата: 24.08.06 12:37
Оценка: +1
> U>Да, и еще: в целом функции будут довольно громоздкими, особенно, если учесть, что нужно учесть именно все тонкости...
> U>В функции обратной конвертации уже не написать так просто
>
> Какие тонкости? Все символы <32 имеют спец. обозначение, все символы >127 выводим в формате \xHH.
> Конвертация обратно: при встрече обратного слэша — switch по следующему за ним символу.

Всякие разные тонкости Те же бэкслеши, если они встретятся в исходной строке, надо преобразовывать в в двойные, и триграфы никто не отменял — поэтому перед ? тоже бэкслеши втыкать надо.
Posted via RSDN NNTP Server 2.0
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re: "Компиляторный" формат строк
От: Аноним  
Дата: 25.08.06 06:30
Оценка:
Здравствуйте, Ulfur, Вы писали:

U>Доброго времени суток!


U>Расшифровка сабжа: есть самая обычная ансишная строка, нужны функции которые могли бы переводить её в "компиляторный" формат, т.е. в формат вида "something string\r\nsecond line\r\npath: c:\\file.txt" (т.е. менять где нужно не печатаемые символы в нужный формат — '\r', '\n' etc) и обратно.

U>Есть ли стандартные функции позволяющие сделать это? Если нет, где можно найти?

Компилятор и так успешно читает файлы в которых строки заканчиваются одним символом '\n' (если ты это имел в виду).
Re[2]: "Компиляторный" формат строк
От: Ulfur Россия  
Дата: 25.08.06 11:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Ulfur, Вы писали:


U>>Доброго времени суток!


U>>Расшифровка сабжа: есть самая обычная ансишная строка, нужны функции которые могли бы переводить её в "компиляторный" формат, т.е. в формат вида "something string\r\nsecond line\r\npath: c:\\file.txt" (т.е. менять где нужно не печатаемые символы в нужный формат — '\r', '\n' etc) и обратно.

U>>Есть ли стандартные функции позволяющие сделать это? Если нет, где можно найти?

А>Компилятор и так успешно читает файлы в которых строки заканчиваются одним символом '\n' (если ты это имел в виду).


Ну конечно же читает
Мне нужно повторить поведение компилятора в своей программе (это не очень сложно) + реализовать возможность обратной конвертации в такой формат (с '\r' и прочими радостями вместо непечатаемых символов — учитывая все тонкости).
Видимо стандартных возможностей все же нет

Пойду смотреть сорцы gcc
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.