如何从两个字符之间的文件中提取整数

How do I extract an integer from a file between two characters?

本文关键字:之间 文件 整数 提取 字符 两个      更新时间:2023-10-16

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

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

必须忽略的地方,直到我找到带有f.ignore(MAX_LONG_LINE, 'n')的字符"="。但是当涉及到在 url 中获取数字 1(可以是任何数字)时,我不知道该怎么办。

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

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

提前致谢

可以是:

#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;
}

我最终自己解决了这个问题:

事实证明f >> num确实有效,我只需要在执行此操作之前再添加一个忽略,因为它正在获取以前的数字。如果您对此有疑问,我建议您先检查您使用f.ignore(MAX_LONG_LINE, 'n')或类似方法是否正确定位。只要num是整数,它就会提取相同类型的值。

非常感谢所有帮助过我的人。