簡體   English   中英

C ++從文件讀取文本並將字符串解析為int數組

[英]C++ Reading text from a file and parsing a string into an int array

首先,我不是C ++專家,並且仍在學習中,因此,您將不勝感激。 起初這個問題似乎很簡單,但是幾個月后,我仍然找不到可行的解決方案。 我希望它有一個簡單的答案,我只是忽略了。

以下是我在此處和其他站點上閱讀類似線程所編寫的一些代碼。 基本上我想從包含GF256乘法數組(256行,每256長)的文本文件中讀取。 逐行閱讀似乎很好地證明了這一點(cout << multi_ << endl;),在這里我確切地看到了我需要作為每行的字符串。 正是在這一點上我有問題。 我似乎找不到一種將這個字符串解析為int數組的方法。 我對此代碼進行了多次迭代,並嘗試了不同的方法,但沒有一個對我有用。 我認為對此有一個非常簡單的解決方案。 再次,任何對此問題的見解將不勝感激。

int kGF = 0;
int multiGFtemp[256 * 256];

int n;

int main()
{
    string multi_;

    ifstream fileGF("GF256MultiTable.txt");

    if(fileGF.is_open())
    {
        while(getline(fileGF,multi_))
        {


            cout << multi_ << endl;
            cin.get();
        }
        fileGF.close();
    }
    else
    {
        cout << "File is not open" << endl;
    }

    cin.get();
    cout << multi_;

    stringstream stream2(multi_);

    while(stream2)
    {
        stream2 >> n;

        cout << n << endl;

        multiGFtemp[kGF] = n;
        kGF++;
    }

    for(int k = 0; k < 256 * 256; k++)
    {
        /*
        cout << multiGFtemp[k] << " ";
        */
    }

    cin.get();
    return 0;
}

您的程序將解析multi_的內容,后者是文件的最后一行。
您可以將其移動到循環中,但這只會使事情復雜化-如果只希望將256 * 256個數字放在一個普通數組中,則可以忽略文件結構。

這是將文件插入數組的一種方法:

int multiGFtemp[256 * 256];

int main()
{
    ifstream fileGF("GF256MultiTable.txt");
    int kGF = 0;
    while (kGF < 256 * 256 && fileGF >> multiGFtemp[kGF])
    {
        kGF++;
    }

    for(int k = 0; k < kGF; k++)
    {
        cout << multiGFtemp[k] << " ";
    }
}

我假設您正在嘗試將已知格式的字符串讀入參數。 例如,您的文件包含一行:“ X = 1035,Y = 6658”。 如果是這種情況,我更喜歡使用sscanf。

例如:

string format("X = %d, Y = %d");
string str("X = 1035, Y = 6658");
int x, y;
sscanf(str.c_str(), format, &x, &y);

Boost庫可能會在這里為您提供幫助。 例如,看看Boost String Algo Split

暫無
暫無

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

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