[英]Reading a line from a text file and storing it into a 2D vector in C++
[英]Reading line by line from a file and storing into a 2d array
我正在嘗試從文件中逐行讀取並將其存儲到二維數組中。 我得到了一個非常奇怪的輸出,這是下面的屏幕截圖。 輸入文件如下所示:
-x-
xx-
--x
代碼如下:
int counter=-1;
while(getline(InputFile,line))
{
counter++;
//cout<<"line size is "<<line.size()<<endl;
for (int i=0;i<NumOfColms;++i)
{
if (line[i]=='-')
{
//cout<<"0 ";
CurrentArray[counter][i]=0;
}
else if (line [i]=='X'||line [i]=='x')
{
//cout<<"x ";
CurrentArray[counter][i]=1;
}
}
//cout<<endl;
for (int i=0;i<NumOfRows;++i)
{
for (int j=0;j<NumOfColms;++j)
{
cout<<CurrentArray[i][j]<<" ";
}
cout<<endl;
}
}
您有如此奇怪的輸出的原因是因為您在閱讀的每一行之后都完整地打印出CurrentArray
的內容。 所以從你的圖像來看,這看起來像這樣:
Line -x- read
0 1 0 //-- CurrentArray[0][0..1..2], which is -x-
7431232 7407000 1951160272 //-- CurrentArray[1][0..1..2]
7406760 7407000 0 //-- CurrentArray[2][0..1..2]
Line xx- read
0 1 0 //-- CurrentArray[0][0..1..2], which is -x-
1 1 0 //-- CurrentArray[1][0..1..2], which is xx-
7406760 7407000 0 //-- CurrentArray[2][0..1..2]
Line --x read
0 1 0 //-- CurrentArray[0][0..1..2], which is -x-
1 1 0 //-- CurrentArray[1][0..1..2], which is xx-
0 0 1 //-- CurrentArray[2][0..1..2], which is --x
如您所見,第 1 次和第 2 次迭代打印出一些垃圾,這些垃圾在您為CurrentArray
分配空間時在內存中,但只有第 3 次打印出正確的數據,因為到那時您已為所有元素分配了正確的值。
解決方案:將打印輸出循環移出while
范圍並將其放在它之后,因此當while
循環完成時,您已將值分配給CurrentArray
所有元素。
我在這里猜測,但沒有看到您聲明、分配內存和空終止數組的代碼,我認為這需要修復。 您得到的輸出表明您可能出於某種原因超出了數組,因為您得到的輸出看起來是垃圾數據。 我以前見過這種情況。
另外, NumOfRows
和NumOfColumns
是如何計算的? 我對此也有疑問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.