C++ 如何根据分隔符序列将文件读入多维数组或三个单独的数组

C++ How would I read a file into an multidimensional array or three seperate arrays based on a sequence of delimiters?

本文关键字:数组 单独 三个 分隔符 何根 文件 C++      更新时间:2023-10-16

C ++和编程新手,我很难弄清楚这一点。

伪想法;假设我可以定义分隔符

 ',' ',' 'n' 

然后逐行读取文件同时将每个元素添加到每个数组。

#define ARRAY_SIZE 1000 
string someString[ARRAY_SIZE];
double someDoubble[ARRAY_SIZE];
double someDoubble[ARRAY_SIZE]; 

那么我正在阅读的文本文件是

somestring, someDouble, someDoublen    

或者换句话说,分隔符是逗号、逗号、换行符。

如果你非常确定分隔符和计数,那么你可以使用

#include<iostream>
#include<fstream>
#include<vector>
#include<string>
using namespace std;
int main()
{
    fstream fs;
    fs.open("abc.txt",ios::in);         //1
    string str;
    int counter = 0;
    vector<string> vecString;
    vector<double> vecDouble1;
    vector<double> vecDouble2;
    while(getline(fs, str))             //2
    {
        char *sArr = new char[str.length()+1];          //3
        strcpy(sArr, str.c_str());
        char *pch = strtok(sArr,",");                   //4
        vecString.push_back(pch);                       //5
        pch = strtok(NULL,",");
        vecDouble1.push_back(atof(pch));                //6
        pch = strtok(NULL,",");
        vecDouble2.push_back(atof(pch));
        delete[] sArr;                                  //7
    }
    cin.ignore();
}

我建议您在向量上使用数组。

按需解释:

  1. 通过流在输入模式下打开文本文件

  2. 逐行从文件中获取文本。

  3. 使用此中间字符数组,因为将const转换为非 'const 是不安全的。

  4. 根据分隔符(在本例中为单逗号(标记输入行。有关教程,请参阅此内容。

  5. 将元素添加到末尾的矢量。

  6. atof()用于将string转换为double

  7. 释放中间字符指针。