Why are escape characters not working when I read from cin?

  • A+


string str = "Hello/nWorld"; 

When I print str, the output is:

Hello World 


string str; cin >> str;      //given input as Hello/nWorld 

When I print str, the output is:


What is the difference between (a) and (b)?


The C++ compiler has certain rules when control characters are provided - documentation. As you can see, when you specify /n in a string literal it is replaced by the compiler with a line feed (value 0xa for ASCII). So instead of 2 symbols, / and n, you get one symbol with binary code 0xa (I assume you use ASCII encoding), which makes the console move output to a new line when printed. When you read a string the compiler is not involved and your string has the actual symbols / and n in it.


:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: