c++ - 我该如何解决这个问题,我需要从文本文件中导出一行?
问题描述
我有一个这样的输入文件:
Virtual (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A)
The electronic state is 1-A.
Alpha occ. eigenvalues -- -0.26426 -0.26166 -0.25915 -0.25885
Alpha occ. eigenvalues -- -0.25284 -0.25172 -0.24273 -0.23559
Alpha occ. eigenvalues -- -0.20078 -0.19615 -0.17676 -0.10810
Alpha virt. eigenvalues -- -0.07062 -0.06520 -0.05969 -0.01767
Alpha virt. eigenvalues -- -0.01604 -0.00951 -0.00428 0.00041
我想导出获得前 11 个字符“Alpha virt.”的第一行。我应该怎么做?我用 C++ 语言编写如下代码,但它无法完成 while 循环功能。我不知道为什么,我是一个新人。请帮我。太感谢了。我的 C++ 代码:
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
#define FILENAME "filelog.txt"
using namespace std;
int main(void) {
char* line_buf = NULL;
size_t line_buf_size = 0;
int line_count = 0;
string s;
std::string dongsosanh = " Alpha virt.";
FILE* fp = fopen(FILENAME, "r");
getline(&line_buf, &line_buf_size, fp);
std::string STRR(line_buf, 11);
do {
line_count++;
getline(&line_buf, &line_buf_size, fp);
} while(STRR.compare(dongsosanh) != 0);
std::cout << STRR << endl;
return 0;
}
太感谢了。
解决方案
你可以这样做:
std::ifstream input(FILENAME);
std::string line;
while(std::getline(input, line)) {
if(line.substr(0, 11) == "Alpha virt.") {
std::cout << line << endl;
return 0;
}
}
编辑:添加了 return 语句以确保只有第一行以“Alpha virt”开头。被打印。
推荐阅读
- python - 带有多个 papermill 命令的 Bash 脚本不会因笔记本错误而失败
- reactjs - 模态组件 - onClick 事件
- java - JPA/Hibernate 似乎将带有 in 子句的查询转换为带有 = 子句的多个查询
- javascript - 如果没有 getElement 方法,这个代码的简写是如何工作的,有人可以解释一下并告诉更多关于这个类比的信息
- groovy - 自动加载特定项目的 build.json 文件,无需硬编码
- apache - htaccess - 使用 .htaccess 将 http_referer 查询字符串参数附加到请求的 uri
- java - 这可以被认为是多态性吗?
- scons - 在 SCons Builder 的操作中调用函数
- terraform - 连接到 TFE 时出现 Terraform Destroy 错误
- javascript - HTML5 输入类型号 + oninput 正则表达式验证擦除字段按点