2015-09-02 57 views
2

爲什麼我的代碼沒有顯示10 5 3的輸入。它一直工作到1到9,但每當它變爲10或更大時,則10不顯示任何輸出。我也嘗試使用atoi(),但在這行int x = str [j] - '0'錯誤。請幫幫我。無法將字符轉換爲循環中的C++整數

#include<iostream> 
#include<string> 
#include<cstdlib> 
using namespace std; 
int main() 
{ 
    int n, sum = 1, num = 0; 
    string str; 
    cin >> n; 
    for(int i = 0; i <= n; i++) { 
     getline(cin, str); 
     for(int j = 0; j < str.length(); j++) { 
      if(str[j] != ' ') { 
       int x = str[j] - '0'; // Here is the problem even I use atoi() but error 
       sum *= x; 
       num = sum; 
      } 
     } 
     if(num != 0) { 
      cout << num << endl; 
      num = 0; 
      sum = 1; 
     } 
    } 
} 
+0

當'x'爲0時,'sum * = x'是做什麼的? – Barmar

+1

您正在乘以所有數字。當你乘以0時,你得到0. – Barmar

+0

在這種情況下如何將字符轉換爲整數 –

回答

0

爲什麼你有兩個變量numsum這不是從您的帖子清晰。看起來多餘。

假設你只需要num,更換線路

sum *= x; 
num = sum; 

通過

num = (10*num + x); 

得到的數字權利。

此外,當您遇到空間時,您需要將num重置爲0。否則,輸入10 8將被視爲108

for(int j = 0; j < str.length(); j++) { 
    if(str[j] != ' ') { 
     num = (10*num + x); 
    } else { 
     // Use num and then reset it 0 
     // ... 
     num = 0; 
    } 
} 
相關問題