title: Another C++ learning moment: returning strings from functions
body: <p>I've got some basic questions about C++.  Consider the following code in which I attempt to return a string.</p>
  
  <pre><code>const std::string&amp;
  NumberHolder::getValueString() {
      char valueCharArray[100];
      sprintf_s(valueCharArray,"%f",_value);
      std::string valueString(valueCharArray);
      return valueString;
  }
  </code></pre>
  
  <p>I'm attempting to return a string with the value of a class member called _value.  However I'm getting the warning that I'm trying to pass back a pointer to a local variable.  This is of course a bad thing.  If I understand C++ enough at this point, this means that the pointer I pass back will already have delete called on it by the time someone tries to use it.  So I modify:</p>
  
  <pre><code>const std::string&amp;
  NumberHolder::getValueString() {
      char valueCharArray[100];
      sprintf_s(valueCharArray,"%f",_value);
      std::string valueString = new std::string(valueCharArray);
      return (*valueString);
  }
  </code></pre>
  
  <p>This should create a pointer on the stack which will survive outside of this function.  Two problems here though: 1) it doesn't compile anyway and I don't understand why (error = <em>cannot convert from 'std::string *' to 'std::basic_string&lt;_Elem,_Traits,_Ax>'</em>) and 2) This seems like a potential memory leak because I'm depending upon someone else to call delete on this guy.  What pattern should I be using here?</p>