簡體   English   中英

從文件中逐行讀取並存儲到二維數組中

[英]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所有元素。

我在這里猜測,但沒有看到您聲明、分配內存和空終止數組的代碼,我認為這需要修復。 您得到的輸出表明您可能出於某種原因超出了數組,因為您得到的輸出看起來是垃圾數據。 我以前見過這種情況。

另外, NumOfRowsNumOfColumns是如何計算的? 我對此也有疑問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM