2015-12-03 2 views
1

Мне нужно найти местоположения 1 2 3 4 5 6 7 8 9 10, которые они хранят в виде строки с именем «строка» и хранятся в строковом векторе с именем «информация». но мой код не работает в моем коде?найти местоположения связки элементов

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

Вы сравниваете int с string, что не будет одинаково сравнивать. Вы должны преобразовать один в другой

// 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

я интерпретирую Ваш вопрос означает, что вы ищете цифры от 0 до 9 в строке, например, «abc012efg» , В этом случае:

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

К сожалению, символ «0», в этой строке, не является целым числом 0. «0», который является ASCII 48, и вы ищете строку не для символов «0» - «9», но для октетов от 0 до 9 - не одно и то же.

Вторая ошибка в том, что вы будете также поиск цифр от 0 до 10, а не от 0 до 9. Возможно, приведенный выше фрагмент кода, вероятно, следует прочитать:

for (int i = 0; i < 10; i++) 
    { 
     if (info[x][y] == '0' + i) 
Смежные вопросы