Эта проверка здесь неверна:
if (sentences[i] == '\0' || sentences[i] == "\n")
Вы сравниваете sentences[i]
(a char*
) с '\0'
(a char
). Часть sentences[i] == "\n"
совершенно неверна - просто избавьтесь от этого. Ваша проверка должна выглядеть следующим образом:
if (sentences[i][0] == '\0' )
Но я бы действительно рекомендовал использовать std::vector<std::string>
вместо этой многомерной строковой конструкции в стиле c. Вы можете просто использовать push_back
, чтобы добавить строку к вектору и цикл for на основе диапазона, чтобы пройти через вектор и распечатать его результаты. Вы можете сделать это с помощью функции input
следующим образом:
void input(std::vector<std::string> &sentences)
{
for (int i = 0; i < 20; i++)
{
std::string s;
std::getline(std::cin, s);
if (s.empty())
break;
sentences.push_back(s);
}
}
А затем функция main
выглядит следующим образом:
int main()
{
std::vector<std::string> sentences;
std::cout << "Enter up to 20 sentences - when done, Press ENTER: " << std::endl;
input(sentences);
for (int i = 0; i < sentences.size(); i++)
std::cout << "Here is sentence " << i + 1 << ": " << std::endl << sentences[i] << std::endl;
std::cout << "Press any key to continue...";
//getch();
return 0;
}
Таким образом, вам даже не понадобитсяжестко запрограммированный предел 20
предложений, вы можете просто удалить его и использовать вместо него цикл while (true)
.