Если проблема, с которой вы сталкиваетесь, заключается в том, что ваша программа всегда печатает 1, 2, 3, ... вместо правильных номеров строк, то это потому, что вы увеличиваете lineCount
, только если подстрока была найдена;чтобы исправить это, переместите lineCount++
после блока if(found != string::npos)
.
Если вы вообще не видите никаких выходных данных, либо файл не содержит " hello "
(регистр имеет значение, а также эти пробелысимволы не будут совпадать с другими пробелами) или «test.txt» не в нужном месте или имеет неправильное имя.
ПРИМЕЧАНИЕ. Сравнение между found
и string::npos
здесь можно (дажехотя один из них является int
со знаком, а другой - size_t
(вероятно, unsigned int
или, возможно, unsigned long long
в 64-разрядной системе). Интересно, что он сломается, если вы измените found
на unsigned int
и size_t
оказывается более широким типом без знака (на 32-разрядной машине вы можете смоделировать эту ситуацию, сделав found
unsigned short
). Поскольку вы на самом деле не используете значение found
, этовероятно, лучше всего избегать конверсий и просто сделать if (s.find(key) != string::npos)
.