簡體   English   中英

從文本文件中讀取整數

[英]Reading in integers from a text file

對於我正在從事的項目,我試圖從文本文件中讀取整數。 在這種情況下,它們被格式化為變量,例如U = 220V,因此我試圖從等號到V的后面讀取。這是我想出的代碼:

if (word[0] == 'U') {

                //declaring variables for checking for certain letters
                char v = 'V';
                char m = 'm';
                char M = 'M';

                //taking in integer for voltage
                while (word[i] != v)  {
                    volt = volt + word[i];
                    i++;
                }
                cout << volt << endl;

在測試案例中,有3個值分別隨機插入整個文件中,分別為U = 200V,U = 220V和U = 22000mV(m為毫,以后將使用其他函數進行處理)。 經過測試后,我收到輸出:

200
200
20000m

第一個輸出正確。 在第二種和第三種情況下,它似乎首先放寬了該數字,而在第三種情況下,它在末尾又添加了一個零。 我本來以為只是丟棄第一個值,所以我更改了代碼行

volt = volt + word[i];

volt = volt + word[i-1];

看看它會在最初讀取該值之前先讀取什么值。在這種情況下,如果它工作正常,它會執行我期望的操作,輸出格式為:

=200
=200
=20000m

我在這里忽略的代碼邏輯是否存在缺陷?

編輯:在嘗試進一步調試它時,我將最終的打印行從while循環外移到了它的內部,以查看循環逐步輸出的內容。 它似乎從2開始,並在每次迭代的末尾繼續添加0,直到結束200000m

似乎問題在於每次迭代后i和volt的值都不會重置。 為了解決這個問題,我添加了以下代碼行:

volt = "";
i = 2;

(在這種情況下,i設置為2,以便在解析時忽略原始的V和=)然后我再次運行程序,打印出要測試的值,現在似乎輸出了正確的值。 因此,更新后的整個代碼塊如下所示:

while (myfile >> word) {

        volt = "";
        i = 2;

        //printing out words (remove)
        cout << word << endl;

        //checking for U in words
            if (word[0] == 'U') {

                //declaring variables for checking for certain letters
                char v = 'V';
                char m = 'm';
                char M = 'M';

                //taking in integer for voltage
                while (word[i] != v)  {
                    volt = volt + word[i];
                    i++;
                    //cout << volt << endl;
                }
                cout << volt << endl;

您的代碼中有什么? 該字符串:“ volt = volt + word [i];” -僅取2個數字“ 2”(這是50)和1個數字“ 0”(這是48)的ASCII碼。 然后我得出結果:50 + 50 + 48 = 148。 我修改了這段代碼。 這里是! 但是這里有使用AnsiString和StrToInt函數。

int volt=0, i=2;
char word[20] = "U=220V\0";
AnsiString String;

if(word[0] == 'U'){

    //declaring variables for checking for certain letters
    char v = 'V';
    char m = 'm';
    char M = 'M';

    while(word[i] != v){
        //volt = volt + word[i];
        String += word[i];
        i++;
        }
    //cout << volt << endl;
    volt = StrToInt(String);
    }

暫無
暫無

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

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