你如何检查c ++中的行尾?

时间:2011-07-04 08:53:20

标签: c++

我必须从用户接受空格分隔的整数,但在遇到新行时停止。 例如:

3 5 7 9
23 47
6

在此示例中,我必须将3, 5, 7, 9存储在数组1中,23, 47存储在数组2中,6存储在数组3中。 不幸的是,我不知道如何在C ++中检查行尾。请帮帮我。

2 个答案:

答案 0 :(得分:10)

通常的解决方案是使用std::getline逐行阅读,然后std::istringstream来解析每一行。

答案 1 :(得分:1)

可能不那么简单,但这是我多年来一直用来读取数据文件的代码片段。给它一个字符串和一个分隔符,它将返回一个分隔字符串的向量。我通常用它来分解线条,但如果你有一个奇怪的字符代表一条线的末尾,我想同样的原则适用。我应该说我没有写它,但我早就忘记了我找到它的地方。

Split(std::string& line, std::string& splitter)
{
  std::vector<std::string> result;
  if (!line.empty() && !splitter.empty())
  {
    for (std::string::size_type offset = 0;;)
    {
      std::string::size_type found = line.find(splitter, offset);
      if (found != std::string::npos)
      {
          std::string tmpString = line.substr(offset, found-offset);
          if (tmpString.size() > 0)
          {
                  result.push_back(tmpString);
          }
          offset = found + splitter.size();
      } else {
        std::string tmpString = line.substr(offset, line.size()-offset);

       if (tmpString.size() > 0)
        {
                result.push_back(tmpString);
        }
        break;
      }
    }
  }
  return result;
}