Как мне прекратить чтение новой строки из строки? - PullRequest
0 голосов
/ 22 апреля 2020

Мне нужно найти метод, который отображает 2-ю строку из данного текста. Если текст имеет длину менее двух строк, он должен отображать «текст недостаточно длинный». Первоначально я решил использовать функцию getline() дважды, но онлайн-оценщик отказывается пройти один из тестов.

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
    string a;
    getline(cin,a);
    getline(cin,a);
    if(a.length())
        cout << a;
    else
        cout << "text not long enough";
}

Можете ли вы определить проблему и предложить решение, пожалуйста?

1 Ответ

0 голосов
/ 22 апреля 2020

Какая строка должна if(a.length()) Совершено sh? Он просто проверяет, содержит ли строка a хотя бы один символ.

В псевдокоде, который вы написали:

if a has at least one character then
    print a
else
    print "text not long enough"

Это потому, что если длина равна 0, она переводится в false любое другое число считается true.

как Джон писал:

if (getline(cin, a) && getline(cin, a))
    cout << a;
else cout << "text not long enough";

Что примерно означает это:

bool isInputTwoLinesLong()
{
    int newlines = 0;
    char c;
    while(cin >> c)
    {
        if (c == '\n') newlines++;

        // input contains at least two lines
        if (newlines == 2) return true;
    }

    // input not long enough
    return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...