Как мне добавить строку, заданную пользователем, внутри пустого массива и найти ее длину в C ++ - PullRequest
1 голос
/ 02 августа 2020

Я новичок в C ++ и много пытался получить строки от пользователя и добавить их в пустой массив. Я прочитал свою книгу, но не получил должного объяснения. Я понимаю, что мой код неправильный, но я пытаюсь просить пользователя ввести строку, и пока пользователь не наберет «Quit», программа должна взять строки и добавить их в мой пустой массив с именем listt. После этого я объявил переменную с именем len и попытался получить длину только что созданного массива. Однако я получаю несколько ошибок и искал ресурсы, чтобы исправить свои проблемы. И все же я не мог этого сделать. Будет действительно полезно, если кто-нибудь поможет мне решить эту проблему. Большое спасибо. Мой код:

#include <iostream>

using namespace std;
int main()
{
    string listt[];

    string word;
    cout<< "Enter word: ";

    while (word != "Quit" ){

        cin >> word;
        listt.push_back(word);
    }
    cout << listt;

    int len ;

    len = listt.size();
    cout << len;
    for (int i=0; i < len; i++){
        cout << i;
        cout << endl;
    
    }
    return 0; 
}

Ответы [ 3 ]

1 голос
/ 02 августа 2020

В вашем коде вы используете методы для вектора класса. Вам необходимо включить вектор библиотеки в вашу программу. Также вам нужно объявить вектор строк как:

vector<string>listt;

Если вы хотите вывести каждый элемент вектора, который вам нужно использовать вместо l oop.

for ( int i = 0; i < listt.size(); i++ ) cout << listt[i] << '\n';

Итак это неверно

cout << listt;

Ваша программа будет выглядеть так:

#include <iostream>
#include <vector>

using namespace std;
int main()
{
    vector<string> listt;

    string word;
    cout << "Enter word: ";

    while (word != "Quit") {

        cin >> word;
        listt.push_back(word);
    }

    int len;
    len = listt.size();
    cout << len;

    for (int i = 0; i < len; i++) {
        cout << listt[i];
        cout << endl;

    }
    return 0;
}
1 голос
/ 02 августа 2020

Вы должны использовать вектор вместо массива:

Поэтому вместо:

string listt[]; // shouldn't compile anyway

используйте:

vector<string> listt;

Кроме того, это не нормально:

cout << listt; // you can't print array or vector directly, so loop and print each item

Также используйте for-each вместо C -style для

for (const auto &v : listt)
{
    cout << v << endl;
}

Остальная часть вашего кода должна быть в порядке.

0 голосов
/ 02 августа 2020

Вероятно, вы ищете vector<string>. То, что вы пытаетесь создать, - это массив, в котором нет ничего похожего на push_back().

Vector docs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...