c++ - 输入问题

标签 c++ string validation

我的输入文件包含 2 行,其中数字由空格分隔。我必须从两行中读取数字并将它们存储在 2 个不同的 std::vector 中。但我不知道每一行有多少个数字。我如何确保在阅读第一行时我也不会开始阅读第二行的数字?我尝试将它们作为字符串读取并检查“\n”字符,但它不起作用....

    cin>>str;
    while(str[0]!='\n' && str!="") {
        sscanf(str.c_str(),"%d",&num); 
        numz.push_back(num); //numz is the vector for the first line of numbers
        cin>>str;
    }

有什么巧妙的方法可以做到这一点吗?

最佳答案

以下将一行读入 vector 。当然你应该添加错误检查。

std::vector<int> readnumline(std::istream& is)
{
  std::string line;
  std::getline(is, line);
  std::istringstream iss(line);
  int num;
  std::vector<int> result;
  while(iss >> num)
    result.push_back(num);
  return result;
}

要读取两个 vector ,您可以使用

std::vector<int> v1(readnumline(std::cin));
std::vector<int> v2(readnumline(std::cin));

关于c++ - 输入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17179559/

相关文章:

c++ - OpenCV - TranCascade 错误 (bad_alloc)

string - 在 Groovy Switch-Case 语句中使用静态字符串

c# - 在 .NET MVC2 中使用 Knockoutjs 和服务器端验证

c++ - 确定直方图的所有局部最大值的函数

C++ win32复选框列表-多重选择

ios - 应该相等的字符串比较不相等

mysql - 验证重复记录

wpf - 同时使用 ValidationAdornerSite 和 ErrorTemplate

C++动态链接库和void指针

c++ - 我可以检查输入的值是 C++ 中的字符串还是整数吗