C ++使用fstream查找特定数据

时间:2016-10-05 00:31:24

标签: c++ fstream ifstream ofstream

我是C ++的新手,需要fstream的帮助。我搜索和阅读,无法找到这些信息。

我想从txt文件中的特定行获取数据。

例如在txt文件中,我有:

10行11列,每列都是int,char,string等。

无论如何,我可以从特定的行和列中检索一个变量,而不使用数组吗?

例如:如果我想从第9行和第4列检索变量。

提前致谢!

2 个答案:

答案 0 :(得分:2)

如果您确切地知道每行以及每列中每行的位置,您可以准确计算出去的位置use seekgto position yourself

将数据存储为文本时,这种情况并不常见。您通常必须编写执行以下操作的函数:

  1. 打开文件
  2. 在文件上使用std::getline N次以从文件到达第N行。
  3. 将行写入std::stringstream
  4. >>次M std::stringstream上使用std::string将列读入std::string
  5. 将Mth列从{{1}}转换为适当的数据类型。
  6. 返回已转换的第M列。

答案 1 :(得分:0)

//-------------------------------
//--This code maybe can help you
//-------------------------------
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>

int main ()
{

    char lBuffer[100];
    //---
    std::string myfilename = "/var/log/mylog.log";
    std::ifstream log_file ( myfilename );
    std::stringstream my_ss;
    std::string c1, c2, c3;
    //---
    std::cout << "Rec1\t\t Rec2\t\t Rec3" << std::endl;
    while ( ! log_file.eof() )
    {
            log_file.getline(lBuffer,80);
            my_ss << lBuffer;

            my_ss >> c1;
            my_ss >> c2;
            my_ss >> c3;

            std::cout << c1 << "\t\t " << c2 << "\t\t "   << c3 << std::endl;

    }

}
//---