Форум программистов, компьютерный форум CyberForum.ru

Записать в вектор стоку по-словно - C++

Восстановить пароль Регистрация
 
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
17.01.2013, 00:57     Записать в вектор стоку по-словно #1
Добрый день, подскажите как организовать проверку в цикле на символ конца строки? (только стандартная библиотека).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
#include <string>
 
using namespace std;
 
int main()
{
    string str;
    vector<string> v;
    int count;
 
    for (count = 0; ; ++count) {
        cin >> str;
        v.push_back(str);
    }
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2013, 00:57     Записать в вектор стоку по-словно
Посмотрите здесь:

C++ записать несколько элементов в вектор сразу, как в массиве
C++ Алгоритм решения. Записать в вектор индексы элементов от максимального к минимальному
Как правильно записать число в вектор, который состоит из векторов? C++
Сформировать вектор, в который записать номера строк, в которых все элементы массива одинаковы. C++
Считать вектор из файла, записать вектор в файл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
17.01.2013, 01:20     Записать в вектор стоку по-словно #2
Ввести EOF вручную (Ctrl+Z - для windows, Ctrl+D - Linux(если не ошибся)). Задачу я б реализовал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <vector>
#include <string>
#include <iterator>
 
int main()
{
    setlocale(0, "");
    std::cout<<"Вводите слова (Ctrl+Z для прекращения):\n";
    std::vector<std::string> vs((std::istream_iterator<std::string>(std::cin)), std::istream_iterator<std::string>());
    for (auto s : vs) std::cout<<s<<"\n";
    system("pause");
    return 0;
}
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
17.01.2013, 02:16  [ТС]     Записать в вектор стоку по-словно #3
Пока-что оригинальней чем код ниже придумать не удалось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <vector>
#include <string>
#include <cstdio>
#include <cctype>
 
using namespace std;
 
int main()
{
    string str;
    vector<string> v;
    int count;
 
    for (char c, count = 0; (c = getchar()) != EOF; ) {
        if (!isspace(c)) {
            str += c;
        }
        else {
            if (!str.empty()) {
                v.push_back(str);
                ++count;
            }
            str = '\0';
        }
        if (c == '\n')
            break;
    }
 
    return 0;
}
Добавлено через 9 минут
Цитата Сообщение от yuron_477 Посмотреть сообщение
C++
1
#include <iostream> #include <vector> #include <string> #include <iterator> int main() { setlocale(0, ""); std::cout<<"Вводите слова (Ctrl+Z для прекращения):\n"; std::vector<std::string> vs((std::istream_iterator<std::string>(std::cin)), std::istream_iterator<std::string>()); for (auto s : vs) std::cout<<s<<"\n"; system("pause"); return 0; }
Жалуется на цикл for 11 строка
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
17.01.2013, 02:25     Записать в вектор стоку по-словно #4
Цитата Сообщение от xtorne21st
Жалуется на цикл for 11 строка
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <vector>
#include <string>
#include <iterator>
 
int main() {
    std::cout << "Вводите слова (Ctrl+Z для прекращения):" << std::endl;
    std::vector<std::string> vs((std::istream_iterator<std::string>(std::cin)), std::istream_iterator<std::string>());
    for (std::vector<std::string>::const_iterator it = vs.begin(); it != vs.end(); ++it) {
        std::cout << *it << std::endl;
    }
}
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
17.01.2013, 02:35  [ТС]     Записать в вектор стоку по-словно #5
to gray_fox спасибо, что помогли запустить пример уважаемого yuron_477. Но результат меня не удовлетворяет. Мне не нужна проверка на Ctrl+Z или Сtrl+D, мне нужна проверка на символ конца строки (или нажатие enter).
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
17.01.2013, 02:48     Записать в вектор стоку по-словно #6
Считать до перевода строки можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
 
 
int main() {
   std::string line;
   std::cin >> std::noskipws;
   for (char ch; std::cin >> ch; ) {
      if (ch == '\n') {
         break;
      }
      line += ch;
   }
   std::cout << line << std::endl;
}
Просто считать первую строку (тоже самое) можно так:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <string>
 
 
int main() {
  std::string line;
  std::getline(std::cin, line);
  std::cout << line << std::endl;
}
Цитата Сообщение от xtorne21st Посмотреть сообщение
или нажатие enter
С помощью стандарной библиотеки не получиться, насколько я знаю.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
17.01.2013, 03:01  [ТС]     Записать в вектор стоку по-словно #7
Да ну а как мне тогда организовать запись в вектор по словно? При помощи getline явно не получиться...
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
17.01.2013, 17:19     Записать в вектор стоку по-словно #8
xtorne21st, можно сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iterator>
#include <vector>
#include <string>
 
 
int main() {
   std::string line;
   std::getline(std::cin, line);
   std::istringstream iss(line);
   std::vector<std::string> words(
        (std::istream_iterator<std::string>(iss))
       , std::istream_iterator<std::string>());
   for (std::vector<std::string>::const_iterator it = words.begin(); it != words.end(); ++it) {
      std::cout << *it << std::endl;
   }
}
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,572
Записей в блоге: 17
17.01.2013, 17:40     Записать в вектор стоку по-словно #9
Цитата Сообщение от xtorne21st Посмотреть сообщение
Записать в вектор стоку по-словно
Блин чет непонято в чем вопрос...
А главное как это соотносится с
Цитата Сообщение от xtorne21st Посмотреть сообщение
Добрый день, подскажите как организовать проверку в цикле на символ конца строки? (только стандартная библиотека).

Читайте строку getline() а затем разделяйте её на слова к примеру boost::split()
( Пример кода boost algorithm string )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2013, 18:32     Записать в вектор стоку по-словно
Еще ссылки по теме:

C++ Как записать все числа из файла в вектор?
C++ Как записать в вектор структуру? Это вообще возможно сделать?
Как из файла записать в вектор? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
17.01.2013, 18:32  [ТС]     Записать в вектор стоку по-словно #10
Цитата Сообщение от Avazart Посмотреть сообщение
Блин чет непонято в чем вопрос...
А главное как это соотносится с
Название темы тожу нужно учесть).
Ответ нашёл в соседней ветке:
C++
1
2
3
4
5
while (cin >> str) {
     v.push_back(str);
     if (cin.get() == '\n')
          break;
}
Yandex
Объявления
17.01.2013, 18:32     Записать в вектор стоку по-словно
Ответ Создать тему
Опции темы

Текущее время: 12:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru