尝试读取 .txt 文件并根据用户输入的字母提取特定行
Posted
技术标签:
【中文标题】尝试读取 .txt 文件并根据用户输入的字母提取特定行【英文标题】:Trying to read a .txt file and pull out a specific line based off of a letter entered by user 【发布时间】:2019-12-05 02:29:28 【问题描述】:我有这个文件,其中包含来自 .txt 文件的元素周期表信息,我正在尝试编写一个程序,允许用户输入元素符号,然后通读文件,直到找到该符号并吐出有关该符号的信息元素。起初我让程序输出没有信息的 cout 语句,现在它在输入符号后完全跳过这一部分并直接进入下一个部分。这是我的代码。
ifstream fin;
ofstream myfile;
string line;
myfile.open("txt file");
fin.open("txt file", ios::app);
while (std::getline(fin, line))
fin >> element >> symbol >> atomic_number >> atomic_mass >> physical_state >> density >> melting_point >> boiling_point >> created >> chemical_group >> electronegativity;
if (line == symbol)
cout << "information from above"
break;
fin.close();
myfile.close();
【问题讨论】:
你的数据文件的内容是什么样的? 另外,混合std::getline()
和使用>>
格式化输入几乎总是一个坏主意。由于后者在流上留下换行符,往往会导致前者给出空字符串。
在尝试使用这些变量之前不验证格式化输入是否成功也是一个坏主意。
它基本上是这个(氢气 H 1 1.0079 气体 0.00008988 14.01 K 20.28 K 没有氢气 2.2),但对于元素周期表上的每个元素。
【参考方案1】:
尝试读取 .txt 文件并根据用户输入的字母提取特定行。
这是一个示例代码:
#include <iostream>
#include"string"
#include <fstream>
using namespace std;
int main(void)
ifstream fi("1.txt", ofstream::in);
ofstream fo("2.txt", ofstream::out);
string buf;
string s1;
cin >> s1;
while (fi >> buf)
if (buf.find(s1) != string::npos) break;
fo << buf << endl;
fi.close();
fo.close();
return 0;
1.txt 是您要读取的文件。将拉出的特定行保存到 2.txt。 “s1”是用户输入的字符串。
希望此代码对您有所帮助。
【讨论】:
以上是关于尝试读取 .txt 文件并根据用户输入的字母提取特定行的主要内容,如果未能解决你的问题,请参考以下文章