我有以下文本文件,需要在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;
}
首先,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
的缺点。