Преобразование строк символа обратной косой черты в символ обратной косой черты

Легко ли преобразовать строку символа обратной косой черты в сам символ обратной косой черты?

например, как бы я сделать что-то вроде этого:

string newline = "\\n";
char n = somefunction(newline); // n == '\n'
cout << newline << n << "a new line";


/*output:
\n
a new line
*/

2 ответа

Предполагая, что ваша строка содержит только тот код, который вы хотите преобразовать:

char somefunction(std::string code)
{
   if ( code.length() != 2 )
       return /* your error code here */

   if ( code[0] != '\\' )
       return /* your error code here */

   switch(code[1]) {
       case 'n' : return '\n';
       case 't' : return '\t';
       case 'r' : return '\r';
   }
   return /* your error code here */
}
for (auto it = newline.begin(); it != newline.end(); ++it) {
  if ((*it) == '\\')
    newline.erase(it);
}
Другие вопросы по тегам