2014-03-26 24 views
0

我正在做一個任務,我們必須創建一個「MyInt」類,它可以處理比常規整數大的數字。我們只需要處理非負數。我需要讓這個班的>>操作員超載,但我正在努力做到這一點。C++ - 重載操作符>>和使用C風格的字符串處理輸入

我不允許#include <string>

有沒有辦法:

a。接受輸入爲C風格的字符串
b。通過它進行解析並檢查空格和非數字(即,如果提示符是c >> x >> y >> ch,並且用戶輸入1000 934H,則將該輸入接受爲兩個MyInt,然後是char)。

我假設它有事情做與peek()get(),但我有麻煩搞清楚他們進來,

我寧願不知道究竟如何做到這一點!請指出我正確的方向。

這裏是我的構造函數,這樣你可以得到的類是什麼的想法(我也有一個轉換構造函數const char *

MyInt::MyInt (int n) 
{ 
    maxsize = 1; 

    for (int i = n; i > 9; i /= 10) { 
     // Divides the number by 10 to find the number of times it is divisible; that is the length 
     maxsize++; 
    } 

    intstring = new int[maxsize]; 

    for (int j = (maxsize - 1); j >= 0; j--) { 
     // Copies the integer into an integer array by use of the modulus operator 
     intstring[j] = n % 10; 
     n = n/10; 
    } 
} 

謝謝!很抱歉,如果這個問題是含糊不清,我還是新如果我可以提供任何更多的信息,使問題更清楚

回答

2

所以你基本上想要解析一個const char*檢索一個整數內,並忽略所有空白(+其他?)字符。

請記住,像'1''M'或甚至' '這些字符只是整數,映射到ASCII表。因此,您可以輕鬆地將字符從其可讀的符號('a')轉換爲其在內存中的值。在C/C++中有很多ascii表和字符的源代碼,所以我會讓你找到它,但你應該明白。在C/C++中,字符是數字(類型char)。

有了這個,你就知道你可以對它們執行操作,比如添加或比較。

處理C字符串的最後一件事情是:它們以空字符結尾,意味着字符被放置在最後一個使用的字符之後。

+0

如何用'istream'的返回類型解析const char *'? – user1888527

+0

@ user1888527我以爲你想採用'const char *'輸入,這就是爲什麼我關注它。我會稍後編輯我的答案,以便「istream」,此時此刻沒有時間抱歉。如果你想嘗試一下自己,這個原則基本上和C字符串一樣,但是使用istream接口。 –