В проблеме я должен был взять n количество строк в качестве входных данных и подсчитать те, которые содержат заданную подстроку (без учета регистра).C++ Использование std :: getline вместо cin >>
Вот мой код:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include<string>
using namespace std;
int main()
{
std::string str2 = "hello";
std::string str3 = "HELLO";
short int n,count=0,i;
cin>>n;
std::string str1[n];
for(i=0;i<n;i++)
{
std::getline(std::cin,str1[i]); //here getline is taking only n-1 inputs
std::size_t found1=str1[i].find(str2);
std::size_t found2=str1[i].find(str3);
if(found1!=std::string::npos || found2!=std::string::npos)
count++;
}
cout<<count;
return 0;
}
Поскольку я не могу использовать CIN, как строка содержит пробелы или cin.getline(), как должны использовать тип строки вместо полукокса [].
Проблема с моим кодом: std :: getline() принимает только n-1 inputs.Cant выяснить почему?
Возможно, последняя строка ввода не прекращается с новой строки. Различные стандартные реализации библиотеки обрабатывают это по-своему. Я помню проблему с компилятором IBM много лет назад, когда вы никогда не могли получить последнюю строку в файле, если она не закончилась новой строкой. – paddy
Так много кода для того, что по сути является одним вызовом 'generate()'. Получать оплату персонажем? – Blindy
Вы забыли про введенную клавишу Enter при вводе 'n' –