0

刚接触 c++ 和编程,我无法弄清楚这一点。

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

 ',' ',' '\n' 

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

#define ARRAY_SIZE 1000 

string someString[ARRAY_SIZE];
double someDoubble[ARRAY_SIZE];
double someDoubble[ARRAY_SIZE]; 

然后我正在阅读的文本文件是

somestring, someDouble, someDouble\n    

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

4

1 回答 1

1

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

#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. 使用此中间 char 数组是因为将 a 强制const转换为非 `const 是不安全的。

  4. 根据分隔符(在您的情况下为单个逗号)标记输入行。请参阅教程。

  5. 将元素添加到最后的向量中。

  6. atof()用于转换stringdouble.

  7. 释放中间字符指针。

于 2013-08-17T04:21:09.247 回答