Yeah I am well aware about the topic. I was sharing my experience about handling unicode in our code. Many times we tend to code only for ASCII but when it comes to actual deployment we may find use cases where unicode is present. At that time we may have to revisit all of our code for unicode compatibility. As personal experience I would suggest one should always keep in mind that his code should be unicode compliant weather or not he, at present using any unicode data. The overhead of taking care about unicode initially while coding would be much lesser compared to revisiting the entire code again. (Sadly, I have to do for one of my project. )
Well, you said: "but when you are dealing with unicode data this doesn't work fine...". My point is that it works as described - it converts an ASCII string to a UTF-16 Unicode one (on Windows). The tip is not about best practices for developing "world-ready" software.
This works fine for all ASCII strings but when you are dealing with unicode data this doesn't work fine.. few days back I was dealing with similar problem.. checkout http://fundoo-tech.blogspot.com/2011/02/c-string-handling-and-unicode-mess.html
Mital, please check the title of the tip: "ASCII strings to Unicode". Of course it does not work if anything other than ASCII is stored in the source string; the point is that if you know you have only ASCII there is no way to call conversion functions - all you need to do is "widen" existing characters to.