C++;使用fstream查找特定数据 我是C++新手,需要FFSW的帮助。我已经搜索和阅读了,但找不到这些信息

C++;使用fstream查找特定数据 我是C++新手,需要FFSW的帮助。我已经搜索和阅读了,但找不到这些信息,c++,fstream,ifstream,ofstream,C++,Fstream,Ifstream,Ofstream,我想从txt文件中的特定行获取数据 例如,在txt文件中,我有: 10行11列,每列可以是int、char、string等 我是否可以在不使用数组的情况下从特定的行和列中检索一个变量 如果我想从第9行和第4列检索变量 提前谢谢 如果您确切地知道每一行的长度和每一列在每一行中的位置,您就可以准确地计算出您想要去的地方和位置 对于以文本形式存储的数据,这种情况并不常见。您通常必须编写一个函数来执行以下操作: 打开文件 在文件上使用N次可从文件中转到第N行 把这一行写进一行 在std::strings

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

例如,在txt文件中,我有:

10行11列,每列可以是int、char、string等

我是否可以在不使用数组的情况下从特定的行和列中检索一个变量

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


提前谢谢

如果您确切地知道每一行的长度和每一列在每一行中的位置,您就可以准确地计算出您想要去的地方和位置

对于以文本形式存储的数据,这种情况并不常见。您通常必须编写一个函数来执行以下操作:

  • 打开文件
  • 在文件上使用N次可从文件中转到第N行
  • 把这一行写进一行
  • std::stringstream
    M次上使用
    >
    将列读入
    std::string
  • 将Mth列从
    std::string
    转换为适当的数据类型
  • 返回转换后的第m列
  • //-------------------------------
    //--这段代码也许可以帮助你
    //-------------------------------
    #包括
    #包括
    #包括
    #包括
    int main()
    {
    char-lBuffer[100];
    //---
    std::string myfilename=“/var/log/mylog.log”;
    std::ifstream日志文件(myfilename);
    std::stringstream my_ss;
    标准:字符串c1、c2、c3;
    //---
    std::cout>c2;
    my_ss>>c3;
    
    标准::不能跳过8“卷”然后跳过3列,然后读一件事?你要问的是它的核心:
    我如何跳转到文件中的某个特定位置?
    任何人建议的事情,比如immibis和已经提供的答案建议的,都不能是通读文件,直到找到你想要的部分,然后记录你想要的部分,然后关闭文件。你不能在不知道文件位置的情况下跳转到文件中的某个位置。
    //-------------------------------
    //--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;
    
        }
    
    }
    //---