2015-12-03 61 views
1

我需要找到位置1 2 3 4 5 6 7 8 9 10它們存儲爲一個名爲'line'的字符串並保存在名爲'info'的字符串向量中。但我的代碼在我的代碼中不起作用?找到一堆元素的位置

string line; 
vector<vector<string>>info; 
for (int x = 0; x < info.size(); x++) 
{ 
    for (int y = 0; y < info[x].size(); y++) 
    { 
     for (int i = 0; i <= 10; i++) 
     { 
      if (info[x][y] == i) 
      { 
       cout << "row " << x; 
       cout << "column " << y; 
      } 
     } 
    } 
} 

或其他更快的方法嗎? 讓我看看你的代碼,因爲我是編程新手,很難理解你的解釋,謝謝。

+0

你是一個字符串比較整數,那是行不通的。 –

回答

1

您正在比較intstring,該值不會相等。你必須一個轉換到其他

// compare them as strings 
if (info[x][y] == std::to_string(i)) 

// compare them as ints 
if (std::stoi(info[x][y]) == i) 
+0

非常感謝您按照我的期望工作 –

1

我解釋你的問題是說,你到9的字符串尋找數字0,如「abc012efg」 。在這種情況下:

for (int i = 0; i <= 10; i++) 
    { 
     if (info[x][y] == i) 

不幸的是,字符「0」,在這個字符串,是不是整數0這是「0」,這是ASCII碼48,和你沒有搜索字符串的字符'0'到'9',但是對於0到9的字節,不是同一個東西。

在這裏的第二個錯誤是,你還可以通過10尋找數字0,而不是0到9的上面的代碼片斷也許應該閱讀:

for (int i = 0; i < 10; i++) 
    { 
     if (info[x][y] == '0' + i)