2011-11-10 23 views
0

這是我有:C++將向量中的字符轉換爲整數...艱難,需要幫助?

char userInput; 
int position; 
vector<string> userVector(7); 
vector<int> someVector(7,1); 

cin >> userInput; 
cin >> position; 

if(userInput == 'X') 
    userVector[position] = '1'; 

if(userVector[position]-someVector[position] == 0) 
    cout << "Success" 

我的問題是userVector[position]實際上是一個字,因爲userVector是一個字符串矢量。但是,我需要計算(userVector[position] - someVector[position]),因爲我需要確定結果是0還是某個其他數字。任何幫助?

如果在這裏沒有意義,userVector必須是一個字符串向量,因爲它是該程序的一部分要求。基本上,應該允許用戶在userVector矢量中的任何位置輸入「X」,並且必須告訴用戶它是否與預期的輸出相匹配。

因此,在這種情況下,「預期輸出」將是someVector,它的所有空間中都有1。我想要做的是減去兩個向量,以便如果用戶輸入除X以外的任何東西,矢量減法不會等於0,並因此導致程序執行不同的操作。

希望能夠解決問題!

+0

這應該是'if(userInput =='X')',我想('=='vs.'=')? – Sven

+2

你應該說明你正在試圖與你的方法一起實現。如果問題未定,很難確定哪些是正確或錯誤的,或者提出替代方案。在這種特殊情況下,您輸入的格式是什麼? (我只能猜測'userVector'應該不是'vector ',但我不能建議使用'vector '還是'vector '...例如。 –

+0

@David,剛剛清除問題就出來了,希望對你有所幫助! – user1038665

回答

1

如果我理解正確的代碼,您試圖將表示十進制數的字符串轉換爲整數。你有幾種方式來做到這一點;例如,通過使用istringstream

int num; 
if (!(istringstream(userInput[position]) >> num)) 
    num = 0; 
if (n - someVector[position] == 0) { 
    ... 

,或者你可以用好老atoi

if (atoi(userInput[position].c_str()) - someVector[position] == 0) { 

如果我說錯了什麼,你正在嘗試做的,請說明你正在嘗試做的..

0

我無法弄清楚你想從你的 問題的陳述中做什麼。表達式userInput[position]不合法,因爲 userInput不是指針,也不是任何可以轉換爲 指針的內容。

但你的代碼似乎並不因爲你描述userInput作爲一個字符串矢量 (std::vector<std::string>?),但代碼聲明它作爲一個char對應的文字說明, 。

+0

對不起,我覺得真的很愚蠢,我只是修復了我的代碼。 。再次抱歉。 – user1038665

+0

你仍然混淆字符(類型'char')和字符串(類型'std :: string')。「X」或「1」是字符常量,類型爲「char」; ''X「'或'」1「'是字符串常量,類型爲'char const []'(如果需要,隱式轉換爲'char const *'或'std :: string')。 'char'也是一個整數類型,所以可以從'int'中加入和減去;如果'char'的值實際上是一個字符編碼,然而結果可能並不如你所期望的那樣:在大多數系統上,'1'的字符編碼是49.如果你知道這個字符是一個數字,那麼'c - '0'是它的值。 –