基于C++从某一行开始读取数据

基于C++从某一行开始读取数据

#include <iostream>
#include <fstream>


using namespace std;

int main()
{
    string line1;
    string str;
    int a=0;//记录从哪一行开始读取

    ifstream file;
    file.open("E:\\ceshi.19N");
    if(!file){
        cerr<<"open error!"<<endl;
        exit(1);
    }

    while (getline(file,line1)) {
        //cout<<line1<<endl;
        a++;
        //从头读取找到END OF HEADER的行数 = a
        if(line1.substr(60,13) == "END OF HEADER"){
            break;
        }
    }
    //保证下面line1与上面的保持一致
    while (getline(file,line1)) {
        cout<<line1<<endl;
    }
    cout << a <<"   "<<"Hello World!" << endl;
    return 0;
}

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是两个问题,我来回答。 第一个问题,读取文件并将每一行的数据存储在一个容器中,可以参考下面的C++代码: ```cpp #include <iostream> #include <fstream> #include <vector> #include <string> using namespace std; int main() { ifstream fin("data.txt"); // 打开文件 if (!fin) { // 判断文件是否打开成功 cerr << "Error opening file" << endl; return -1; } vector<int> A; // 定义一个存储数据的容器A int num; while (fin >> num) { // 逐行读取数据 A.push_back(num); // 将数据存储到容器A中 } fin.close(); // 关闭文件 // 输出容器A中的数据 for (int i = 0; i < A.size(); i++) { cout << A[i] << " "; } cout << endl; return 0; } ``` 这段代码假设文件名为"data.txt",文件中每一行只有一个整数,将所有的整数读取到容器A中,并输出容器A中的所有数据。 第二个问题,如何用最快的方式查找一个变量是否存在于容器A中,可以使用C++ STL中的set容器,set容器是一种基于红黑树实现的自动排序的关联容器,可以自动去重,并且查找速度非常快。具体实现代码如下: ```cpp #include <iostream> #include <fstream> #include <set> #include <string> using namespace std; int main() { ifstream fin("data.txt"); // 打开文件 if (!fin) { // 判断文件是否打开成功 cerr << "Error opening file" << endl; return -1; } set<int> A; // 定义一个存储数据的set容器A int num; while (fin >> num) { // 逐行读取数据 A.insert(num); // 将数据存储到set容器A中 } fin.close(); // 关闭文件 // 查找一个变量是否存在于set容器A中 int x = 5; if (A.find(x) != A.end()) { // 如果找到了x cout << "Found " << x << " in set A" << endl; } else { // 如果没有找到x cout << "Could not find " << x << " in set A" << endl; } return 0; } ``` 这段代码使用set容器存储数据,并查找一个变量x是否存在于set容器A中。实际上,set容器的查找速度比vector容器的查找速度快得多,因为set容器内部实现了自动排序和二分查找。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值