c++提取2维数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++提取2维数组相关的知识,希望对你有一定的参考价值。

怎样将一个在txt里的2维数组提取进C++程序?
比如一个10X10的数组,double的,提取到a[10][10]中。
我之后的运算要用到这个数组,所以不能只是cout出来,a[10][10]一定要等于那个数组。

参考技术A 假设二维数组以行优先的方式存放在外部文件中。

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

const int s = 10; //数组为 10X10
int myarray[s][s];//定义二维数组

void main()

ifstream inobj("array.txt");
if (!inobj)

cout << "file open failed.\n";
exit(0);


for (int i = 0; i < s; ++i)

if (inobj.eof())
break;
for (int j = 0; j < s; ++j)

inobj >> myarray[i][j];


cout << endl;
inobj.close();
//现在,二维数组 myarray 已经用文件初始化了,每一个元素都具有有效值

cout<<"the array:\n";
for (int m = 0; m < s; ++m)

for (int n = 0; n < s; ++n)

cout<<myarray[m][n]<<"\t";

cout<<"\n";

cout<<"\n";
参考技术B c语言可以存入以逗号隔开的数据,c++我只知道可以存入以空格隔开的数据,你把数据用空格隔开才可以用下面的程序编译。
#include<fstream>
#include<iostream>
using namespace std;
struct list

int num;
float x_coor;
float y_coor;
float z_coor;
;
int main()

int n = 0,i=0,count=0;
list a[10];
ifstream fin("hello.txt");
if(!fin)

cout<<"open failed!"<<endl;
exit(1);

while(fin>>a[i].num>>a[i].x_coor>>a[i].y_coor>>a[i].z_coor)


//cout<<a[i].num<<" "<<a[i].x_coor<<" "<<a[i].y_coor<<" "<<a[i].z_coor<<endl;
i++;
count++;

fin.close();
for(i=0;i<count;i++)
cout<<a[i].num<<" "<<a[i].x_coor<<" "<<a[i].y_coor<<" "<<a[i].z_coor<<endl;

return 0;
参考技术C 文件中的数字以空格分开。
#include <fstream>
#include <iostream>
#include <string>

#define N 10
using namespace std;

int main()

ifstream in;
int i, j, a[N][N];
in.open("data.txt");

if (!in)

cout << "打开文件失败!" << endl;
return -1;


for (i = 0; i < N; ++i)

for (j = 0; j < N; ++j)

if (in.eof())
goto out;
in >> a[i][j];
cout << a[i][j] << '\t';




out:
cout << endl;
in.close();
return 0;
本回答被提问者采纳
参考技术D 来迟了

指向多维数组 C++ 的指针

【中文标题】指向多维数组 C++ 的指针【英文标题】:Pointer to multidimensional array C++ 【发布时间】:2020-07-14 13:46:28 【问题描述】:

我正在尝试了解如何将指针与多维数组一起使用(例如:2 维、3 维......)。我在网上看到了很多资源,但我似乎仍然无法理解它。语法也让我失望。以下这些语法是什么意思(为什么我们需要括号)?代码有什么作用以及它是如何工作的?谢谢!

示例 1

int (*array)[5] = new int[10][5];

示例 2

int c[3][2][2]; 
int (*p)[2][2] = c; 

【问题讨论】:

int *array[5];array 定义为一个由五个指向int 的指针组成的数组。 int (*array)[5];array 定义为指向由五个 int 值组成的数组的指针。 @Someprogrammerdude 是正确且非常简洁的。您可以在此here 上阅读更多信息。 这个玩具工具可以帮助找出带括号和不带括号的类型的不同含义:C gibberish ↔ English 【参考方案1】:
    int (*arr)[5] : arr指针,指向一个由 5 个整数组成的数组 int (*p)[2][2] = c; : p 是一个指针,指向 2 个数组,每行有一个 2 个数组 ints

它是如何工作的?看下面这个简单的例子:

    int (*array)[2] = new int[3][2];

    for (int i = 0; i < 3; i++)
    
        for (int j = 0; j < 2; j++)
            array[i][j] = i + j;
    
    
    for (int i = 0; i < 3; i++)
    
        for (int j = 0; j < 2; j++)
            cout << array[i][j] << ' ';
        cout << '\n';
    

输出:

0 1 
1 2 
2 3 

为什么我们需要括号?

考虑:

int *arr[3];

这里,arr 是一个大小为 3 的数组,可以存储 3 个指针。所以它是一个指针数组。见:

int a = 10;
int b = 20;
int c = 30;
arr[0] = &a; //arr[0] pointing to a
arr[1] = &b; //arr[1] pointing to b
arr[2] = &c; //arr[2] pointing to c

【讨论】:

以上是关于c++提取2维数组的主要内容,如果未能解决你的问题,请参考以下文章

c++ 怎样提取一个字符串中的连续数字并放到另一个数组中保存? 急!

C++ - 从整数数组中插入和提取字符

从 C++ 中的字节数组中提取非零索引的最快方法是啥

什么是 C++ 中的数组<T ^> ^T 以及如何从数组中提取值?

如何在 C++ 中从字节数组(在 BIG-ENDIAN 中)中提取单个字段

C++提取字符串里面的数字