首页 > 解决方案 > 如何从两个字符之间的文件中提取整数?

问题描述

我想从包含如下行的文件中提取特定数字(行继续,这是唯一重要的部分):

"https://stackoverflow.com/questions/ask?wizard=1";

在找到带有f.ignore(MAX_LONG_LINE, '\n'). 但是当谈到在 url 中获取数字 1(它可以是任何数字)时,我不知道该怎么做。

我已经尝试过,getline(f, num, '"')但它不支持整数,并且从字符串转换为整数对于我正在学习的内容和我的课程来说太先进了。必须有一个更简单的方法。在那之后,我尝试了,f >> num但它会跳到下一个空格而不是'"'。

num应导致文件中 '=' 和 '"' 之间的数字,在示例中为 1,但可能不同。

提前致谢

标签: c++

解决方案


可 :

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>

using namespace std;

int main(int argc, char ** argv)
{
  if (argc != 2) {
    cout << "usage : " << argv[0] << " <file path>" << endl;
    return -1;
  }

  ifstream in(argv[1]);

  if (!in) {
    cout << "cannot open "  << argv[1] << endl;
    return -1;
  }

  string line;

  in >> line;

  size_t p = line.rfind('=');

  if (p == string::npos) {
    cout << "invalid line '"  << line << "',  = is missing" << endl;
    return -1;
  }

  stringstream ss(line.substr(p + 1));
  int n;
  string s;

  ss >> n >> s;

  if (s != "\";") {
    cout << "invalid line '"  << line << "',  must be ...<number>\";'" << endl;
    return -1;
  }

  cout << "number is " << n << endl;

  return 0;
}

推荐阅读