2015-06-03 236 views
0

我的輸入將被以下:C++忽略特定的字符而CIN

4 5 1 6 7I

代替尋找和與串置換,

我想那些單個值存儲在雙

但偷看,而忽略 '我'

所以

雙A = 4,B = 5,c = 6,d = 7

以下醜陋的代碼是什麼,我就

我失去了工作,幫助將不勝感激

謝謝!

char c, real[1024], img[1024]; 
    int i = 0; 
    bool flag = false, 
    flag2 = false; 

    while(c = input.get()) 
    { 
     if(input.peek() == ' '){ 

      i = 0; 
      flag2 = true; 

     } 

     if(!flag2){ 

      real[ i++ ] = c; 

     }else{ 

      img[ i++ ] = c; 

     } 


     if(flag) 
     { 
      break; 
     } 

     while(input.peek() == 'i') 
     { 
      if(input.peek() == 'i') 
      { 
       flag = true; 
       i = 0; 
       flag2 = true; 

      }if(input.peek() == ' ') 
      { 
       i = 0; 
       flag2 = true; 

      } 

      input.ignore(1, 'i'); 

     } 



    } 

    if(flag){ 

     obj.doubleValueA = 0.0 ; 
     obj.doubleValueB = atof(real); 

     return input; 

    }else{ 

     obj.doubleValueA = atof(real); 
     obj.doubleValueB = atof(img); 
    } 

    return input; // enables cin >> a >> b >> c 
+1

如果你想讀複數,有一個內置的方式:'複雜 X; cin >> x;'。然而,這要求輸入看起來像「(3,7)」,而不是「3 7i」。 –

+0

或者用'cin >> str;'和'stoi(str)'(C11)或'atoi(str.c_str())'將每個由空格分隔的標記讀取爲一個字符串。 – ooga

回答

2
#include<iostream> 
#include<vector> 
#include<sstream> 
#include<ctype> 
#include<string> 

using namespace std; 

int parseNumber(string number) 
{ 
    unsigned i = 0; 

    // Find the position where the character starts 
    while (i < number.size() && isdigit(number[i]) 
    { 
     i++; 
    } 

    number = number.substr(0, i); 

    // Retrieve the number from the string using stringstream 
    stringstream ss(number); 
    int result; 
    ss >> result; 

    // Return the result 
    return result; 
} 

int main() 
{ 
    string input; 
    getline(cin, input); 

    stringstream ss(input); 
    string number; 
    vector<int> complexNumbers; 

    while (ss >> number) 
    { 
     complexNumbers.push_back(parseNumber(number)); 
    } 

    for (unsigned i = 0; i < complexNumbers.size(); i++) 
    { 
     cout << complexNumbers[i] << " "; 
    } 
}