title: Why should one use std::string over c-style strings in C++?
body: <p>"One should always use <strong><a href="http://www.cplusplus.com/reference/string/string/">std::string</a></strong> over c-style strings(<code>char *</code>)" is advice that comes up for almost every source code posted here. While the advice is no doubt good, the actual questions being addressed do not permit to elaborate on the <strong>why?</strong> aspect of the advice in detail. This question is to serve as a placeholder for the same.          </p>
  
  <p>A good answer should cover the following aspects(in detail):    </p>
  
  <ol>
  <li>Why should one use <code>std::string</code> over c-style strings in C++? </li>
  <li>What are the disadvantages (if any) of the practice mentioned in <code>#1</code>? </li>
  <li>What are the scenarios where the opposite of the advice mentioned in <code>#1</code> is a good practice? </li>
  </ol>