este código:cadena de impresión sin personajes escapan
void Controller::write(const std::string& str) {
std::cout << "Writing: [" << str << "] to board." << std::endl;
s.write(str);
toma una string
y lo empuja a través de una conexión serie a un microcontrolador. (Esto funciona bien). Sin embargo, cuando trato de empujar una como esta: write("ats203?\r")
, la salida de la consola se ve así:
] to board.ts203?
Así que la Writing: [a
se sobreescribe por el ] to board.
después std::cout
se encuentra con el \r
en la cadena.
¿Cómo puedo imprimir la cadena como un grupo de caracteres en lugar de modificar la salida de la consola cuando se encuentra un carácter de escape?
EDITAR: Para aclarar.
I quiero mi cadena es ats203?\r
. Esto se debe a que el microcontrolador se controla utilizando una versión ligeramente modificada de AT command, y no acepta el comando hasta que lee \r
. Cuando se presiona la cadena hacia el microcontrolador, se lee \r
como un retorno de carro, y actúa sobre cosas que lee antes del \r
.
Lo que quiero es mostrar la cadena que he construido. Hay un montón de otros comandos en otros lugares que se crean dependiendo de los indicadores que se establecen en tiempo de ejecución. Así que termino con cadenas que se parecen a ate1\ratv0\rat+OSA=7\rat+OSX=255\r
.
Me gustaría ver lo que he construido y lo que estoy presionando. No puedo hacer esto, porque std::cout
lee el retorno de carro, actúa sobre él y desactiva la salida de mi consola.
EDIT: Aclaración, de nuevo: Quiero std::cout << "Writing: [" << str << "] to board." << std::endl;
para producir (cuando str
es ats203?\r
):
Writing: [ats203?\r] to board.
Puede escapar el carácter de escape, por lo que '\\ R' dejará la cadena como un literal' "\ r" '. ..no estoy seguro si eso es lo que quieres o no. – prelic
No entiendo, ¿por qué hay un '\ r' en su cadena en primer lugar? ¿Qué le gustaría mostrar en su lugar? –
'\ r' es un carácter de retorno de carro - hará que el" cursor "salte al principio de la línea. Tal vez quería el carácter de nueva línea, '\ n'? – jrok