<small id='LvMZs'></small><noframes id='LvMZs'>

  • <i id='LvMZs'><tr id='LvMZs'><dt id='LvMZs'><q id='LvMZs'><span id='LvMZs'><b id='LvMZs'><form id='LvMZs'><ins id='LvMZs'></ins><ul id='LvMZs'></ul><sub id='LvMZs'></sub></form><legend id='LvMZs'></legend><bdo id='LvMZs'><pre id='LvMZs'><center id='LvMZs'></center></pre></bdo></b><th id='LvMZs'></th></span></q></dt></tr></i><div id='LvMZs'><tfoot id='LvMZs'></tfoot><dl id='LvMZs'><fieldset id='LvMZs'></fieldset></dl></div>

      1. <legend id='LvMZs'><style id='LvMZs'><dir id='LvMZs'><q id='LvMZs'></q></dir></style></legend>
          <bdo id='LvMZs'></bdo><ul id='LvMZs'></ul>
        <tfoot id='LvMZs'></tfoot>

        如何重用字符串流

        how to reuse stringstream(如何重用字符串流)
            <tbody id='bI3Y7'></tbody>
          • <bdo id='bI3Y7'></bdo><ul id='bI3Y7'></ul>

              <legend id='bI3Y7'><style id='bI3Y7'><dir id='bI3Y7'><q id='bI3Y7'></q></dir></style></legend>

              <small id='bI3Y7'></small><noframes id='bI3Y7'>

                <i id='bI3Y7'><tr id='bI3Y7'><dt id='bI3Y7'><q id='bI3Y7'><span id='bI3Y7'><b id='bI3Y7'><form id='bI3Y7'><ins id='bI3Y7'></ins><ul id='bI3Y7'></ul><sub id='bI3Y7'></sub></form><legend id='bI3Y7'></legend><bdo id='bI3Y7'><pre id='bI3Y7'><center id='bI3Y7'></center></pre></bdo></b><th id='bI3Y7'></th></span></q></dt></tr></i><div id='bI3Y7'><tfoot id='bI3Y7'></tfoot><dl id='bI3Y7'><fieldset id='bI3Y7'></fieldset></dl></div>

              • <tfoot id='bI3Y7'></tfoot>
                  本文介绍了如何重用字符串流的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  这些线程不回答我:

                  重置字符串流

                  如何清除字符串流变量?

                  std::ifstream file( szFIleName_p );
                  if( !file ) return false;
                  
                  // create a string stream for parsing
                  
                  std::stringstream szBuffer;
                  
                  std::string szLine;     // current line
                  std::string szKeyWord;  // first word on the line identifying what data it contains
                  
                  while( !file.eof()){
                  
                      // read line by line
                  
                      std::getline(file, szLine);
                  
                      // ignore empty lines
                  
                      if(szLine == "") continue;
                  
                      szBuffer.str("");
                      szBuffer.str(szLine);
                      szBuffer>>szKeyWord;
                  

                  szKeyword 将始终包含第一个单词,szBuffer 不会被重置.我在任何地方都找不到关于如何使用 stringstream 的明确示例.

                  szKeyword will always contain the first word, szBuffer is not being reset. I can't find a clear example anywhere on how to use stringstream.

                  回答后的新代码:

                  ...
                  szBuffer.str(szLine);
                  szBuffer.clear();
                  szBuffer>>szKeyWord;
                  ...
                  

                  好的,这是我的最终版本:

                  Ok, thats my final version:

                  std::string szLine;     // current line
                  std::string szKeyWord;  // first word on the line identifying what data it contains
                  
                  // read line by line
                  
                  while( std::getline(file, szLine) ){
                  
                      // ignore empty lines
                  
                      if(szLine == "") continue;
                  
                      // create a string stream for parsing
                  
                      std::istringstream szBuffer(szLine);
                      szBuffer>>szKeyWord;
                  

                  推荐答案

                  您在调用 str("") 后没有 clear() 流.再看看这个答案,它还解释了为什么你应该使用 str(std::string()) 重置.在您的情况下,您还可以仅使用 str(szLine) 重置内容.

                  You didn't clear() the stream after calling str(""). Take another look at this answer, it also explains why you should reset using str(std::string()). And in your case, you could also reset the contents using only str(szLine).

                  如果你不调用clear(),流的标志(如eof)不会被重置,导致令人惊讶的行为;)

                  If you don't call clear(), the flags of the stream (like eof) wont be reset, resulting in surprising behaviour ;)

                  这篇关于如何重用字符串流的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  How to print vector#39;s data(如何打印矢量的数据)
                  Visual C++ appends 0xCC (int3) bytes at the end of functions(Visual C++ 在函数末尾附加 0xCC (int3) 字节)
                  How to use a variable inside a _T wrapper?(如何在 _T 包装器中使用变量?)
                  MSVC++ warning flags(MSVC++ 警告标志)
                  How to read file which contains uxxxx in vc++(如何在vc++中读取包含uxxxx的文件)
                  stack overflow error in C++ program(C++程序中的堆栈溢出错误)

                1. <legend id='y6Jn1'><style id='y6Jn1'><dir id='y6Jn1'><q id='y6Jn1'></q></dir></style></legend>

                    <tfoot id='y6Jn1'></tfoot>
                      <bdo id='y6Jn1'></bdo><ul id='y6Jn1'></ul>

                      <small id='y6Jn1'></small><noframes id='y6Jn1'>

                          <tbody id='y6Jn1'></tbody>
                          <i id='y6Jn1'><tr id='y6Jn1'><dt id='y6Jn1'><q id='y6Jn1'><span id='y6Jn1'><b id='y6Jn1'><form id='y6Jn1'><ins id='y6Jn1'></ins><ul id='y6Jn1'></ul><sub id='y6Jn1'></sub></form><legend id='y6Jn1'></legend><bdo id='y6Jn1'><pre id='y6Jn1'><center id='y6Jn1'></center></pre></bdo></b><th id='y6Jn1'></th></span></q></dt></tr></i><div id='y6Jn1'><tfoot id='y6Jn1'></tfoot><dl id='y6Jn1'><fieldset id='y6Jn1'></fieldset></dl></div>