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

  • A+
Category:Languages

(a)

string str = "Hello/nWorld"; 

When I print str, the output is:

Hello World 

(b)

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

When I print str, the output is:

Hello/nWorld 

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.

Comment

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