vector读文件不指定行列数

vector读文件不指定行列数,第1张

在使用C++中的vector读取文件时,需要指定行列数。因为vector的大小是在运行时动态分配的,而在读取文件之前,程序无法确定文件的行数和列数。尺厅因此,需要在读取文件之前,先确定文件的行数和列数,然后再根据这些信息动态分配vector的大小。铅陆

以下是一个示例代码,可以读取一个包含浮点数的文本文件,并将其存储到一个二维vector中:

cpp

Copy code

#include <iostream>

#include <fstream>

#include <vector>

using namespace std

int main()

{

// 打开文件

ifstream file("data.txt")

// 统计文件行数和列数

int rows = 0, cols = 0

string line

while (getline(file, line)) {

rows++

if (cols == 0) {

// 第一行计算列数

cols = count(line.begin(), line.end(), ' ') + 1

}

}

// 重置文件指针

file.clear()

file.seekg(0, ios::beg)

// 创建二维vector

vector<vector<float>>data(rows, vector<float>(cols))

// 读取文件数据

for (int i = 0i <rowsi++) {

for (int j = 0j <colsj++) {

file >陵激隐>data[i][j]

}

}

// 输出vector中的数据

for (int i = 0i <rowsi++) {

for (int j = 0j <colsj++) {

cout <<data[i][j] <<" "

}

cout <<endl

}

// 关闭文件

file.close()

return 0

}

在这个示例代码中,首先打开文件并统计文件的行数和列数。然后根据行数和列数创建一个二维vector,并读取文件中的数据。最后输出vector中的数据。

1.读入的函数

// in_file_name是文件名,file_name是保存读入数据的vector

void readTxt(string in_file_name, vector<string>&file_name) {

ifstream in_file

in_file.open(in_file_name.data())

assert(in_file.is_open())

string item

while (getline(in_file, item)) {//以行的形式读入

file_name.push_back(item)//保存每一行

//cout <<item <<endl

}

}

2.读入string转为int型,形成二维vector

#include <fstream>孙蔽

#include <sstream>

#include<iostream>

#include<vector>纳竖

#include<assert.h>

using namespace std

void readTxt(string in_file_name, vector<int>&file_name) {

ifstream in_file

in_file.open(in_file_name.data())

assert(in_file.is_open())

string item

int item1

cout <<in_file_name <<endl

while (getline(in_file, item)) {

item1 = stoi(item)

file_name.push_back(item1)

//cout <<item <洞凯大<endl

}

}

int main()

{

vector<int>a

char file_name[1024]

vector<vector<int>>matrix

for (int i = 1i <2i++) {

snprintf(file_name, sizeof(file_name), "signal_%d.txt",i)

//cout <<file_name<<endl

readTxt(file_name, a)

matrix.push_back(a)

}

cout <<a.size()<<endl

//cout <<a[0] <<endl

}

3.将数组写入txt

#include<iostream>

#include<fstream>

using namespace std

void main(){

for (i = 0i <ni++)

{

x[i] = i

}

    ofstream out("output.txt")

for (i = 0i <ni++)

{

out <<x[i]<<'\n'

}

out.close()//使用完毕一定要关闭文件流

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12127139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存