如何在C ++中将文本文件中的字符转换为2D数组

时间:2016-11-05 06:43:29

标签: c++ sorting for-loop multidimensional-array char

需要正确实施此方法的帮助:

#include<iostream>
#include<string>
#include<fstream>

using namespace std;

int main() {

    char s[100][100], t[100];

    int i, j, c,position = 0;

    ifstream inFile("Lab9_2Data.txt");
    while (!inFile.eof())
    {
        for (i = 0; i < 30; i++)
            for (j = 0; j < 30; j++)
                inFile >> s[i];
    }

    /*for (i = 0; i < 30; i++)
        //inFile >> s[i];
        cin >> s[i]*/


        printf("Strings are Before Sorting : \n");
        for (i = 0; i < 30; i++)
            printf("%s, ", s[i]);

        for (i = 1; i < 30; i++) {
            for (j = 1; j < 30; j++) {
                //swap
                if (strcmp(s[j - 1], s[j]) > 0) {
                    strcpy(t, s[j - 1]);
                    strcpy(s[j - 1], s[j]);
                    strcpy(s[j], t);
                }
            }
        }
        cout << "\n\n";
        printf("\n Strings are after sorting : \n"); //Printing given strings after sorting.
        for (i = 0; i < 30; i++)
        {
            printf("%s, ", s[i]);
        }
        cin.get();
        getchar();
        inFile.close();
        return 0;


    }

1 个答案:

答案 0 :(得分:1)

您可以尝试使用vector<vector<char>>来构建2D数组。代码是这样的:

vector<vector<char>> arrays;
ifstream inFile("Lab9_2Data.txt");
while (!inFile.eof())
{
    for (i = 0; i < 30; i++){
        vector<char> temp;
        for (j = 0; j < 30; j++){
            char t;
            inFile >> t;
            temp.push_back(t);
        }
        arrays.push_back(temp);
    }
}

通过这种方式,您可以获得30 * 30阵列。您可以使用arrays[i][j]访问该数组中的每个元素。   顺便说一下,如果您使用iostreamcincout,请不要使用printf(),因为它们具有相同的功能,但printf是C -style函数和iostream是C ++风格。如果您使用C ++编写,请继续使用C ++样式代码而不是C样式。