Advertisement
fastman92

C++ turn string into string with escape characters

Apr 28th, 2013
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1. // Converts character to C++ styled character
  2. // can create string with \r \n and so
  3. template<class T> void charToStyledChar(T stringDelimiter, T c, T* outputStr)
  4. {
  5.     if(c == stringDelimiter)
  6.     {
  7.         outputStr[0] = L'\\';
  8.         outputStr[1] = stringDelimiter;
  9.         outputStr[2] = NULL;
  10.     }
  11.     else
  12.     {
  13.         auto PutEscapedCharacter = [&](T secondPart)
  14.         {
  15.             outputStr[0] = L'\\';
  16.             outputStr[1] = secondPart;
  17.             outputStr[2] = NULL;
  18.         };
  19.  
  20.         switch(c)
  21.         {
  22.             // NULL terminator
  23.             case '\0':
  24.                 return PutEscapedCharacter('0');
  25.  
  26.             // Alert (bell)
  27.             case '\a':
  28.                 return PutEscapedCharacter('a');
  29.  
  30.             // Backspace
  31.             case '\b':             
  32.                 return PutEscapedCharacter('b');
  33.  
  34.             // Form feed
  35.             case '\f':     
  36.                 return PutEscapedCharacter('f');
  37.                    
  38.             // Newline (line feed)
  39.             case '\n':
  40.                 return PutEscapedCharacter('n');
  41.  
  42.             // Carriage return
  43.             case '\r':
  44.                 return PutEscapedCharacter('r');
  45.  
  46.             // Horizontal tab
  47.             case '\t':
  48.                 return PutEscapedCharacter('t');
  49.  
  50.             // Vertical tab
  51.             case '\v':
  52.                 return PutEscapedCharacter('\v');
  53.  
  54.             case '\\':
  55.                 return PutEscapedCharacter('\\');
  56.             default:
  57.                 outputStr[0] = c;
  58.                 outputStr[1] = NULL;
  59.         }
  60.     }
  61. }
  62.  
  63. // Converts string to C++ styled characters
  64. // can create string with \r \n and so
  65. template<class T> void strToStyledStr(T stringDelimiter, const T* inputStr, T* outputStr)
  66. {
  67.     while(T c = *inputStr)
  68.     {
  69.         charToStyledChar(stringDelimiter, c, outputStr);
  70.        
  71.         while(*outputStr)
  72.             outputStr++;
  73.  
  74.         inputStr++;
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement