C++读取txt中数据的两种方法
有時候,在程序編寫過程中涉及到數(shù)據(jù)的讀寫,比如讀入.txt文檔中的數(shù)字,本文提供兩種讀入方法。
一、利用數(shù)據(jù)流
比如.txt中數(shù)據(jù)是如下格式:
其中第一行代表有多少個二維數(shù)組,本例中是有3個二維數(shù)組,第二行代表每個二維數(shù)組有多少行,本例中二維數(shù)組的列數(shù)是固定不變的。那么如何讀取這些二維數(shù)組呢?
我的代碼如下:
#include<iostream> #include<stdlib.h> #include<stdio.h> #include<fstream>using namespace std;int main() {ifstream infile("example.txt");int num = 0;infile >> num;cout << num << endl;for (int i = 0; i < num; i++){int N = 0;infile >> N;cout << N << endl;int(*p)[5];//a pointer to a array which has 5 int p = new int[N][5];//creat a dynamic arrayfor (int j = 0; j < N; j++){infile >> p[j][0] >> p[j][1] >> p[j][2] >> p[j][3] >> p[j][4];cout << p[j][0] << p[j][1] << p[j][2] << p[j][3] << p[j][4] << endl;} delete [] p;//free space}int aaa;cin >> aaa;return 0; }上述代碼首先讀入第一行數(shù)據(jù),以確定二維數(shù)組個數(shù)num,然后利用for循環(huán),依次讀入各個二維數(shù)組。在每個循環(huán)中,首先讀入每個二維數(shù)組的行數(shù)N,根據(jù)行數(shù)循環(huán)讀入二維數(shù)組的每一行。由于二維數(shù)組的行數(shù)是不確定的,所以涉及到動態(tài)二維數(shù)組的創(chuàng)建,在本例中,由于二維數(shù)組的列數(shù)是固定的,所以動態(tài)數(shù)組創(chuàng)建方法如下:
int(*p)[5];//a pointer to a array which has 5 int p = new int[N][5];//creat a dynamic array首先聲明一個數(shù)組指針p,該指針指向一個含有5個int變量的數(shù)組,然后利用new運算符申請空間,并將該空間的地址賦給指針p。在讀入數(shù)據(jù)并進行相關(guān)操作之后(本例中的操作只是簡單地輸出顯示),需要將動態(tài)申請的空間進行釋放,利用new申請的空間,采用delete進行釋放: delete [] p;//free space改程序 的運行結(jié)果如下:
顯然,數(shù)據(jù)都得到了正確讀入。
二、利用c函數(shù)fopen
代碼如下:
#include<iostream> #include<stdlib.h> #include<stdio.h> using namespace std;int main() { FILE *f; f = fopen("example.txt", "r");//How files are used? r=we can only read the file if (f == NULL) { cout << "open file failed! the programmer will exit!" << endl; exit(-1); } int num = 0; fscanf(f, "%d\n", &num); cout << num << endl; for (int i = 0; i < num; i++) { int N = 0; fscanf(f, "%d\n", &N); cout << N << endl; int(*p)[5];//a pointer to a array which has 5 int p = new int[N][5];//creat a dynamic array for (int j = 0; j < N; j++) { fscanf(f, "%d %d %d %d %d\n", &p[j][0], &p[j][1], &p[j][2], &p[j][3], &p[j][4]); cout << p[j][0] << p[j][1] << p[j][2] << p[j][3] << p[j][4] << endl;} delete[] p;//free space } fclose(f); int aaa; cin >> aaa; return 0; }與方法一一樣,該段程序的運行結(jié)果如下:
故利用以上兩種辦法都可以實現(xiàn)對于.txt文檔中數(shù)字的讀取。
總結(jié)
以上是生活随笔為你收集整理的C++读取txt中数据的两种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: postman跨域测试_安装使用Hopp
- 下一篇: ZED ROS包发布topic介绍