C++ 如何根据分隔符序列将文件读入多维数组或三个单独的数组
C++ How would I read a file into an multidimensional array or three seperate arrays based on a sequence of delimiters?
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();
}
我建议您在向量上使用数组。
按需解释:
通过流在输入模式下打开文本文件
逐行从文件中获取文本。
使用此中间字符数组,因为将
const
转换为非 'const 是不安全的。根据分隔符(在本例中为单逗号(标记输入行。有关教程,请参阅此内容。
将元素添加到末尾的矢量。
atof()
用于将string
转换为double
。释放中间字符指针。
相关文章:
- 转换函数,将 std::数组的双精度作为参数或双精度作为参数单独转换
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 从 2 个单独的数组中删除重复元素
- 传递动态数组以接收单独函数中的输入
- 为什么具有单独字符的字符数组不像字符串文字那样以 null 终止符结尾?
- 需要根据读取的数据类型将ifstream提取到单独的数组中
- 如何将单独的数组分组在一起(类似于按一列对表进行排序)
- 显示数组的问题.一切都放在一个单独的行中,但不放入单独的列中
- 输入坐标分为与文件故障的两个单独的数组
- 数组和单独初始化之间的区别
- 如果我在C++中分配一个带有运算符 new[] 的对象数组,但单独释放它们是否仍然构成内存泄漏
- C++:我想将数据从结构复制/存储到单独的数组中
- PIC MICROs:如何在单独的字符数组中转换浮点值
- C++,同时对单独的数组进行排序
- C++ 将数组拆分为 2 个单独的数组
- 在单独的数据中显示数组数据
- 添加到 int 会更改单独的 char 数组
- 读取整数文件并将每一行存储在一个单独的数组中
- 初始化哈希表的 stl 列表动态数组(单独链接)