Хранить несколько входов в одном буфере? - PullRequest
0 голосов
/ 23 декабря 2018

Скажем, вам нужно хранить имена людей. Имя и фамилия.Я знаю, что могу сделать это следующим образом:

    string firstname;
    string lastname;
    string fullname;

    cout << "Users firstname ? "; cin >> firstname;
    cout << "Users last name ? "; cin >> lastname;

    fullname = firstname + ' ' + lastname;

Я хотел бы удалить две дополнительные переменные и конкатенацию в конце.

Я хочу иметь возможность продолжить ввод в буфереперед сохранением в переменной.

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 23 декабря 2018

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

#include <iostream>
#include <string>

int main()
{
std::string lastname;
std::string fullname;

std::cout << "Users firstname ? "; std::cin >> fullname;
std::cout << "Users last name ? "; std::cin >> lastname;

fullname += ' ' + lastname;

std::cout << "Full name: " << fullname << std::endl;

return 0;

}

Второй способ, который вам нужен для итераторов, - это больше, чем вы ищете.

#include <iostream>
#include <string>
#include <iterator>

int main()
{
    std::cout << "Users firstname ? ";
    std::istream_iterator<std::string> it(std::cin);

    std::string fullName;

    std::cout << "Users lastname ? ";
    fullName += *it;
    ++it;
    fullName += ' ' + *it;

    std::cout << "Full Name: " << fullName << "\n";

    return 0;
}

Лично я считаю, что первый способ прощечитать и следовать.

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