Как можно прочитать введенное в программу предложение и переместить слова в вектор строк?
Для этого используется стандартная функция std::getline
для считывания предложений и строковый поток std::istringstream
для разбиения каждого предложения на отдельные слова.
Ниже представлена демонстрационная программа. В ней ввод продолжается до тех пор, пока пользователь не введет пустую строку, то есть когда он просто не нажмет клавишу Enter без ввода текста предложения.
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <iterator>
int main()
{
std::vector<std::vector<std::string>> v;
std::cout << "Enter a sequence of sentences (Enter - exit): ";
std::string s;
while ( std::getline( std::cin, s, '\n' ) && !s.empty() )
{
std::istringstream is( s );
std::vector<std::string> row( ( std::istream_iterator<std::string>( is ) ),
std::istream_iterator<std::string>() );
v.push_back( row );
}
std::cout << std::endl;
for ( const auto &row : v )
{
for ( const auto &s : row ) std::cout << s << ' ';
std::cout << std::endl;
}
return 0;
}
Если ввести через консоль следующие предложения
Hello, everybody!
How do you do?
то вывод на консоль будет следующим
Enter a sequence of sentences (Enter - exit): Hello, everybody!
How do you do?
Hello, everybody!
How do you do?
Так ведь что считать словами...
Например, что является предложением и какие слова во введенном тексте
- Привет! - сказала она. - Я не понимаю,
как считывать слова в вектор. Ты не поможешь?
Можно считать всю строку с помощью getline()
и разобрать ее на слова - скажем, с помощью strtok()
. А может, предложение не ограничено одной строкой?
Можно понимать слова в понимании C++, и считывать их по одному с помощью
string word;
...
cin >> word;
и отслеживать, где заканчивается "предложение" - например, точкой.
Можно вообще считывать по одному символу и разбираться - это еще слово, или уже пунктуация/пробел?
Словом, без абсолютно точного ТЗ результат обычно ХЗ...
Хотя бы вот так:
#include <algorithm>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
int main() {
std::vector<std::string> v;
std::copy(std::istream_iterator<std::string>(std::cin), {}, std::back_inserter(v));
std::copy(std::begin(v), std::end(v), std::ostream_iterator<std::string>(std::cout, " - "));
}
Если под "предложением" понимается последовательность слов, разделённых пробельными символами.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Доброго времени сутокРеализую калькулятор в Qt
Есть два окнаВ одном окне LineEdit, в другом - PushButton
Какие технологии Boost были включены и реализованы в stdlib C++ 11?
Необходимо определить, является ли логарифм a по основанию b целымМое решение: cout<<fmod(log(a)/log(b),1); Но, например, при тесте a=46656 b=6, программа...