c++提取2维数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++提取2维数组相关的知识,希望对你有一定的参考价值。
怎样将一个在txt里的2维数组提取进C++程序?
比如一个10X10的数组,double的,提取到a[10][10]中。
我之后的运算要用到这个数组,所以不能只是cout出来,a[10][10]一定要等于那个数组。
#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++ 中的数组<T ^> ^T 以及如何从数组中提取值?