Как вывести восемь слов в строку, используя вектор <string>? - PullRequest
0 голосов
/ 29 февраля 2020

Я пытался заставить программу записать 8 слов в строку после того, как пользователь ввел свое предложение. Он печатает только те слова, которые были набраны, и я понятия не имею, как заставить его набирать 8 слов на линию.

#include <iostream>
#include <vector>
#include <string>
#include <cctype>
using namespace std;

vector<string> sentence;
string sente = "";

void print(string, string);

template<typename T>
void print(vector<T>& v, string)
{

    cout << "Enter your sentence " << endl;

    getline(cin, sente);
    sentence.push_back(sente);

    for (auto const elem: sentence)
    {
        cout << elem;
    }

}

int main()
{
    print(sentence,sente);
}

1 Ответ

0 голосов
/ 29 февраля 2020

Использование глобальных переменных, как правило, не очень хорошая практика.

Также вам не нужен дополнительный вектор для вашего варианта использования.

Посмотрите на следующий код, где вы можете умно использовать istringstream для вашего случая использования:

#include <iostream>
#include <string>
#include <sstream>

void print()
{

    std::string sente;

    std::cout << "Enter your sentence " << std::endl;

    getline(std::cin, sente);

    // Used to split string around spaces. 
    std::istringstream ss(sente);

    int wordCountPerLine = 0;
    int requiredWordsPerLine = 8;

    // Traverse through all words 
    do { 
        // Read a word 
        std::string word; 
        ss >> word; 

        // Print the read word 
        std::cout << word << " ";

        wordCountPerLine++;

        if(wordCountPerLine % requiredWordsPerLine == 0){
            std::cout<<std::endl;
            wordCountPerLine = 0;
        }

        // While there is more to read 
    } while (ss); 
}

int main()
{
    print();
}

Не стесняйтесь задавать любые сомнения.

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