Печать строки без экранирующих символов

Этот код:

void Controller::write(const std::string& str) {
    std::cout << "Writing: [" << str << "] to board." << std::endl; 
    s.write(str);

берет строку и передает ее по последовательному каналу связи с микроконтроллером. (Это прекрасно работает). Однако, когда я пытаюсь ввести такую ​​команду: write ("ats203? \ R") , вывод консоли выглядит следующим образом:

] to board.ts203?

Таким образом, Writing: [a получает перезаписано ] на плату. после того, как std :: cout встречает \ r в строке.

Как мне напечатать строку как набор символов, а не искажать вывод консоли, когда встречается escape-символ?

РЕДАКТИРОВАТЬ: Чтобы уточнить.

Я хочу, чтобы моя строка была ats203? \ R .Это связано с тем, что микроконтроллер управляется с помощью слегка измененной версии AT-команды , а не принимает команду, пока не прочитает \ r . Когда строка передается в микроконтроллер, он считывает \ r как возврат каретки и воздействует на то, что было прочитано до \ r .

Я хочу отобразить созданную мной строку. В другом месте существует множество других команд, которые создаются в зависимости от флагов, установленных во время выполнения. В итоге получаются строки, которые выглядят примерно так ate1 \ ratv0 \ rat + OSA = 7 \ rat + OSX = 255 \ r .

Я хотел бы увидеть, что я сконструировал и к чему стремлюсь. Я не могу этого сделать, потому что std :: cout считывает возврат каретки, воздействует на него и искажает мой вывод на консоль.

РЕДАКТИРОВАТЬ: Уточнение, еще раз: Я хочу std :: cout для создания (когда str равно ats203? \ r ):

Writing: [ats203?\r] to board. 

6
задан simont 24 February 2012 в 18:14
поделиться