我如何将纺织品放入c ++中的2D数组中?

问题描述 投票:0回答:1

我有以下文本文件,需要在c ++中放入2D数组(10 x 10)。

#O########
#**------#
#**--**--#
#----**--#
O--------#
#***--**-#
#***--**-O
#***--**-#
#--------#
########O#

我尽力编写了代码,但是效果不佳,因为当我尝试显示特定的行和列时,效果却不佳。这种奇怪地存储所有内容。任何帮助将不胜感激。另外,作为分配要求,我需要计算一个特定星号周围有多少个星号。我将如何去做?可以是任何8个亲切方向。

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
const int irow = 10;
const int icol = 10;
string sline;
int r =0;
string array [icol][irow];
ifstream inputfile;
inputfile.open("d1.txt");
if (!inputfile.is_open())
{
cout<<"error opening the file"<<endl;
}

while (r<irow && getline (inputfile,sline))
{
int c=0;
while(c<icol  && getline (inputfile,sline))
{
array[r][c++] = sline;
}
r++;
}

for (int i =0 ; i< irow; i++)
{
for (int j =0; j<icol; j++)
{
cout<<array[i][j];
cout<<endl;
}


}




return 0;
}

c++ arrays string multidimensional-array text-files
1个回答
0
投票

首先,string本身就像一维数组。因此,变量array的声明必须正确。

不需要嵌套循环,因为您可以将文件中的输入字符串直接分配给array的特定索引。

看看下面的实现:

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

int main()
{
    const int irow = 10;
    const int icol = 10;
    std::string sline;
    int r =0;
    std::string array [irow];

    std::ifstream inputfile;
    inputfile.open("d1.txt");

    if (!inputfile.is_open())
    {
        std::cout<<"error opening the file"<<std::endl;
    }

    while (r<irow )
    {
        getline (inputfile,sline);

        array[r] = sline; // Assigning string to particular index

        r++;
    }

    for (int i =0 ; i< irow; i++)
    {
        for(int j =0; j<icol; j++) // We can also use length() to calculate size of string here
        { 
            std::cout<<array[i][j];
        }
        std::cout<<std::endl;
    }
}

输出:

#O########
#**------#
#**--**--#
#----**--#
O--------#
#***--**-#
#***--**-O
#***--**-#
#--------#
########O#

PS:找出using namespace std的缺点。

© www.soinside.com 2019 - 2024. All rights reserved.