title: std::setw and unicode character
body: <p>My problem is shown in the following minimal example:</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;string&gt;
  #include &lt;iomanip&gt;
  int main()
  {
      int width = 15;
      std::cout &lt;&lt; std::left;
      std::cout &lt;&lt; std::setw(width) &lt;&lt; "Prints well" &lt;&lt; std::setw(width) &lt;&lt; "This too" &lt;&lt; '\n';
      std::cout &lt;&lt; std::setw(width) &lt;&lt; "\u221E" &lt;&lt; std::setw(width) &lt;&lt; "This not?" &lt;&lt; '\n';
      std::cout &lt;&lt; std::setw(width+2) &lt;&lt; "\u221E" &lt;&lt; std::setw(width) &lt;&lt; "This is good" &lt;&lt; '\n';
  }
  </code></pre>
  
  <p>Compiled using g++, it prints:</p>
  
  <pre><code>Prints well    This too       
  ∞            This not?      
  ∞              This is good
  </code></pre>
  
  <p>So it seems that the unicode symbol uses 3 spaces from the setw instead of one. Is there a simple way to fix this, not knowing beforehand whether a unicode character will be in the string?</p>