如何从两个字符之间的文件中提取整数
How do I extract an integer from a file between two characters?
我想从包含如下所示的行的文件中提取一个特定的数字(该行继续,这是唯一重要的部分):
"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
是整数,它就会提取相同类型的值。
非常感谢所有帮助过我的人。
相关文章:
- 如何在cpp文件之间切换窗口?在Qt中
- 如何使用管道在父级和子级之间来回传递文件
- 共享库 (.so) 没有扩展名的 Linux 可执行文件之间的区别?
- 在.cpp文件之间传递结构声明,而不使用全局头文件
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- 在.cpp文件之间传递全局字符串变量?
- 如何在 的开头<x>和结尾<y>之间更改带有文件输出的字符串的值
- 在两个.cpp文件之间定义全局类/结构指针
- 文件删除(使用取消链接)与释放所有磁盘空间之间的延迟
- CSV文件之间的差异,使用getline()产生不同的结果
- 检测到 Conan 配置文件设置与 CMake 之间的编译器版本不匹配
- 如何从txt文件c++中提取括号之间的数字
- 包括两个文件 C++ 之间的冲突
- 在没有外部文件的情况下在应用会话之间保存变量
- 如何读取特定单词之间的文本文件?
- OpenCV 文件存储 - 错误:元素之间的解析错误 (icvYMLParseValue) 缺失
- 为什么 .cpp 文件和 .h 文件之间有区别?
- 在结构函数之间传递文件路径 C++ 编辑:修复LNK2019错误
- 在头文件和 .cc 文件之间建立关系
- CPP项目中.fdf和.h文件之间的差异