Допустим у меня есть std::string str
. Хочу ввести с клавиатуры текст, который скопируется в str
. Можно через std::getline(std::cin, str)
. А как снова что нибудь ввести с клавиатуры и это что-то также скопируется в str
не создавая при этом других std::string str1
(То есть не создавая временную переменную std::string str1
в которой будет текст, который я ввел во второй раз, а потом str += str1
). Например я ввел Первая
в командной строке нажал Enter
, потом ввел строка
и std::cout << str
выведет мне Первая строка
.
#include <iostream>
#include <string>
int main()
{
std::string str;
std::getline(std::cin, str); // Ввожу `первая`
std::cout << "\n" << str << "\n"; // выведет `первая`
std::getline(std::cin, str);// Ввожу `строка`
std::cout << "\n" << str << '\n';// Вывдет `строка`
return 0;
}
Тогда можно реализовать самопальную getline, неперезаписывающую строки:
#include <iostream>
#include <string>
::std::istream &
my_getline(::std::istream & input, ::std::string & str)
{
for(;;)
{
auto const c{::std::cin.get()};
if(::std::cin.good() && ('\n' != c))
{
str.push_back(static_cast<char>(c));
}
else
{
break;
}
}
return input;
}
int main()
{
::std::string str;
my_getline(::std::cin, str);
::std::cout << str << "\n"; // выведет `первая`
my_getline(::std::cin, str);
::std::cout << str << '\n';// Вывдет `перваястрока`
return 0;
}
online compiler
using std::string;
using It = std::istream_iterator<string>;
It first(std::cin), last();
string s;
while (std::cin) {
s += *first++;
s += ' ';
}
std::cout << s;
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть map описывающий сущность, где пара это имя поля и его значениеПодскажите пожалуйста, есть ли какой нибудь инструмент который позволит...
break - выбрасывает вас из цикла либо же ключевое слово которое выходит из циклаЗавершить цикл раньше времени и тд
В фрагменте есть RecyclerView, в который должны загружаться картинкиОданко при тесте приложение вылетает при переходе на фрагмент с этим RecyclerView