C++:导入txt中的矩阵

这篇具有很好参考价值的文章主要介绍了C++:导入txt中的矩阵。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近写C++代码的时候,需要把txt中保存的矩阵读入到C++定义的数组中,因此,本文记录了关键代码。


txt 文件中的矩阵

输入:

1 2 3 4 5 3 2
2 3 4 5 5 3 3
3 4 5 6 7 8 9
7 8 7 8 7 8 1

输出:
c++怎么输入矩阵,C++Python混合编程,C++MFC,c++,矩阵,开发语言文章来源地址https://www.toymoban.com/news/detail-539309.html


导入 txt 中的矩阵到 C++ 的二维矩阵中

#include <iostream>
#include <fstream>
#include<vector>
using namespace std;
#include <string> 


// ======== Funtion: getFileRows ===============================
// ========= output :矩阵行数 ===================================
// 逐行读取文件并计数,得到 txt 文件的行数
int getFileRows(const char* fileName) {
    ifstream fileStream;
    string tmp;
    int count = 0;// 行数计数器
    fileStream.open(fileName, ios::in);//ios::in 表示以只读的方式读取文件
    if (fileStream.fail())//文件打开失败:返回0
    {
        return 0;
    }
    else//文件存在
    {
        while (getline(fileStream, tmp, '\n'))//读取一行
        {
            if (tmp.size() > 0)
                count++;
        }
        fileStream.close();
        return count;
    }
}


// ======== Funtion: getFileColumns ============================
// ========= output :矩阵列数 ===================================
int getFileColumns(const char* fileName) {
    ifstream fileStream;
    fileStream.open(fileName, std::ios::_Nocreate);

    double tmp = 0;
    int count = 0;	// 列数计数器	
    char c;			//当前位置的字符
    c = fileStream.peek();
    while (('\n' != c) && (!fileStream.eof()))	// 指针指向的当前字符,仅观测,不移动指针位置
    {
        fileStream >> tmp;
        ++count;
        c = fileStream.peek();
    }

    fileStream.close();
    return count;
}


// ===========Funtion: getMatrix ===============================
// =========== output :二维矩阵 ==================================
double** getMatrix(const char* path, const int n, const int m) {
    fstream myfile;
    myfile.open(path); 

    double** mat = new double* [n];
    for (int i = 0; i < n; i++)
    {
        double* tmp = new double[m];
        mat[i] = tmp;
    }

    string tmpStr;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            myfile >> tmpStr;//
            double dValue = atof(tmpStr.c_str());
            mat[i][j] = dValue;
        }
    }
    return mat;
}


int main() {
    
    //txt文件保存路径
    const char* dataPath = "D:\\VisualStudioProjects\\ConsoleApplication1\\Test.txt";

    int n = getFileRows(dataPath);             //获取txt中的矩阵行数
    int m = getFileColumns(dataPath);          //获取txt中的矩阵列数
    double** mat = getMatrix(dataPath, n, m); //获取二维矩阵

    //打印矩阵到控制台
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << mat[i][j] << "\x20" ;
        }
        cout << endl;
    }

    return 0;
}

一维数组写入本地txt

#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;

//int nSize = (int)x.size();

// 向txt文档中写入数据
ofstream dataFile;
dataFile.open("D:\\dataFile.txt", ofstream::app);
fstream file("D:\\dataFile.txt", ios::out);

for (int nIndex = 0; nIndex < nSize; nIndex++)
{
	dataFile << x[nIndex] << '\r' << endl;     // 写入数据
}
   
dataFile.close();                           // 关闭文档

读取csv中的数据

//	//读取方向约束
//	ifstream file;
//	file.open("E:\\W_ImplicitModeling\\W_TestData\\1.csv", std::ios_base::in);
//	std::vector<double> dxs;
//	std::vector<double> dys;
//	std::vector<double> dzs;
//	std::vector<double> vsx;
//	std::vector<double> vsy;
//	std::vector<double> vsz;
//	std::string s;
//	std::getline(file, s);
//	while (std::getline(file, s))
//	{
//		std::vector<std::string> datas = split(s, ',');
//		if (datas.size() < 4)
//			continue;
//		dxs.push_back(atof(datas[1].c_str()));
//		dys.push_back(atof(datas[2].c_str()));
//		dzs.push_back(atof(datas[3].c_str()));
//		vsx.push_back(atof(datas[6].c_str()));
//		vsy.push_back(atof(datas[7].c_str()));
//		vsz.push_back(atof(datas[8].c_str()));
//	}
//	file.close();

写入csv

//写入csv
	CStdioFile tempFile;
	CString strFile = _T("D:\\drill_hole_xyzp.csv");
	if (PathFileExists(strFile))
	{
		CFile::Remove(strFile);
	}
	tempFile.Open(strFile, CFile::modeCreate | CFile::modeReadWrite | CFile::typeText);
	tempFile.SeekToEnd();
	CString strDrillHoleXYZPTemp;
	CString strDrillHoleXYZP;
	for (int i = 0; i < nBoreholeVoxelCount; i++)
	{
		pX[i] = m_vecBoreholeStratumPointX[i];
		pY[i] = m_vecBoreholeStratumPointY[i];
		pZ[i] = m_vecBoreholeStratumPointZ[i];
		pV[i] = m_vecRockTypeIndex[i];
		strDrillHoleXYZPTemp.Format(_T("%f,%f,%f,%f\r"), pX[i], pY[i], pZ[i], pV[i]);
		strDrillHoleXYZP += strDrillHoleXYZPTemp;
	}
	tempFile.WriteString(strDrillHoleXYZP);
	tempFile.Flush();
	tempFile.Close();

到了这里,关于C++:导入txt中的矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 混合编程python与C++

    上个版本: 只是用到ctypes进行传输, 这次将python服务端更改为C++服务端,方便后续维护. 本文实现功能: python传输图片给C++, C++接受图片后对图片进行处理,并将结果返回给python客户端, pass image from python to C++ 注意文中的model 部分有删减,createJson可参考使用,利用json来传递值 其实这个

    2024年02月08日
    浏览(34)
  • C++(Qt)与Python混合编程

    文章开头,请大家注意一点: 开始搭配环境之前,请大家完成对自己电脑位数的查看【32位/64位】 本篇博客适用于windows64位版本安装。当然了,32位的友友也可以对照着配置! 本篇教程所用环境如下: windows11(64位) Qt 6.4 Python 3.8.6 【由于本人已安装python版本为3.8.6,不想重

    2024年01月24日
    浏览(32)
  • 【C++学习】C++入门 | C++该怎么学 | 命名空间 | 输入输出

    欢迎来到C++的世界,这是一门令人兴奋的语言。 好吧,每当我开始阅读C++的书籍的时候,开头的第一句话必定是这个, 也不知道其他语言的编程书籍是不是这样,那就让这句话也作为我C++分享之路上的第一句话吧。 目录 写在前面 1. C++怎么学? 1. C语言 2. Object-Oriented C++ 3.

    2024年02月10日
    浏览(30)
  • Python 和 C++ 混合编程:pybind11 使用

    我们通常在 Python 上进行算法开发,因为 Python 编程方便,易于快速验证算法。而在验证算法正确后,如果对运行效率有更高要求的话,则会将计算密集的模块使用 C/C++ 重新实现,来达到代码运行效率加速的效果。所以,这就涉及到了 Python 和 C++ 混合编程,而在这方面 pybin

    2024年02月08日
    浏览(32)
  • visual stdio c++调用python混合编程

    关于环境创建可以参考https://blog.csdn.net/qq_36559788/article/details/123174309 这里python我用的是anaconda里的python38 ,并且没有debug库,所以我只用了release库 在vs中设置项目属性,添加 包含目录 以及 附加库目录 ,注意都是在release模式下添加的 在main.cpp中添加头文件 添加代码 编译运行

    2024年02月01日
    浏览(33)
  • 混合输入矩阵乘法的性能优化

    作者 |  Manish Gupta OneFlow编译 翻译|宛子琳、杨婷 AI驱动的技术正逐渐融入人们日常生活的各个角落,有望提高人们获取知识的能力,并提升整体生产效率。语言大模型(LLM)正是这些应用的核心。LLM对内存的需求很高,通常需要专用的硬件加速器,以高效地提供数百亿亿次

    2024年03月11日
    浏览(50)
  • C++ 混合Python编程 及 Visual Studio配置

    接手了一个C++应用程序,解析csv和生成csv文件,但是如果要把多个csv文件合并成一个Excel,分布在不同的Sheet中,又想在一次运行中完成,不想说运行完C++ 的App后,再调用一个Python脚本或程序,这需要两步操作 根据安装的Visual Studio 的版本,我安装的是64-bit的。 如何查看当前

    2024年02月13日
    浏览(33)
  • chatgpt赋能python:Python怎么手动输入矩阵

    若想在使用Python进行科学计算或机器学习时,我们经常会使用矩阵。要能够利用Python处理这些矩阵,我们需要了解如何输入一个矩阵。本文将介绍如何通过代码手动输入矩阵。 矩阵是一个二维数组,它包含了行和列。矩阵可以用于表示现实世界中的许多问题,如线性代数、图

    2024年02月08日
    浏览(41)
  • 【C++那些事儿】初识C++ 命名空间,C++中的输入输出以及缺省函数

    君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C++ 游戏开发 Hello,米娜桑们,这里是君兮_,数据结构和算法初阶更新完毕,我们继续来扩充我们的知识面,今天我们从认识C++开始来带大家学习C++,我之前看过一套书叫做《明朝那些事儿》,把本来枯燥的历史讲的生动

    2024年02月08日
    浏览(46)
  • opencv C++ 读取视频中的光斑是否在移动(图片存储在指定文件见下,光斑坐标存在TXT文本中)

    读取视频中的光斑是否在移动(图片存储在指定文件见下,光斑坐标存在TXT文本中)

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包