Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
#1

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

17.01.2013, 00:57. Просмотров 401. Ответов 9
Метки нет (Все метки)

Добрый день, подскажите как организовать проверку в цикле на символ конца строки? (только стандартная библиотека).
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2013, 00:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Записать в вектор стоку по-словно (C++):

Считать вектор из файла, записать вектор в файл - C++
Доброго времени суток. Программа должна считывать числа из заданного файла, потом записывать в другой файл вектор, в котором каждый элемент...

Как из файла записать в вектор? - C++
есть от такая программа в файл вроде пишет а вот придумать как извлечь в вектор не могу ( , подскажите как ето можно сделать или киньте...

Как записать вектор в файл? - C++
Как записать вектора в файл? Вектор содержит тип long long. Записать в одну строчку в виде одного большого числа. ofstream out(imy3);...

Записать каждые 16 символов из файла в вектор - C++
Как прочитать txt файл и записать каждые 16 символов в вектор? Я сделал вот так: std::vector&lt;char&gt; text_v; char time_text; ...

Записать в вектор строки разной длины из файла - C++
Всем добрый день, ситуация следующая: не могу записать в вектор строки разной длины из файла допустим есть файл под названием first.txt...

Как записать все числа из файла в вектор? - C++
Числа хранятся в таком формате, слово Fail потом идет набор чисел и заканчивается двумя пустыми строчками и потом повторяется ниже...

9
DiffEreD
1431 / 768 / 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;
}
0
xtorne21st
интересующийся
304 / 275 / 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 строка
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 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;
    }
}
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
17.01.2013, 02:35  [ТС] #5
to gray_fox спасибо, что помогли запустить пример уважаемого yuron_477. Но результат меня не удовлетворяет. Мне не нужна проверка на Ctrl+Z или Сtrl+D, мне нужна проверка на символ конца строки (или нажатие enter).
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 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
С помощью стандарной библиотеки не получиться, насколько я знаю.
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
17.01.2013, 03:01  [ТС] #7
Да ну а как мне тогда организовать запись в вектор по словно? При помощи getline явно не получиться...
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 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;
   }
}
0
Avazart
Эксперт С++
7235 / 5431 / 303
Регистрация: 10.12.2010
Сообщений: 24,135
Записей в блоге: 17
17.01.2013, 17:40 #9
Цитата Сообщение от xtorne21st Посмотреть сообщение
Записать в вектор стоку по-словно
Блин чет непонято в чем вопрос...
А главное как это соотносится с
Цитата Сообщение от xtorne21st Посмотреть сообщение
Добрый день, подскажите как организовать проверку в цикле на символ конца строки? (только стандартная библиотека).

Читайте строку getline() а затем разделяйте её на слова к примеру boost::split()
( Пример кода boost algorithm string )
0
xtorne21st
интересующийся
304 / 275 / 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;
}
0
17.01.2013, 18:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2013, 18:32
Привет! Вот еще темы с ответами:

Записать в вектор случайные числа в заданном диапазоне - C++
нужно записать в вектор от 10 до 15 случайных чисел от -10 до 10 сделал вот так #include &lt;iostream&gt; #include &lt;string&gt; ...

Как из стека записать в вектор неивестной заранее длины? - C++
Пыталась, не получилось. А именно не могу понять, как вынуть из стека хоть что-нибудь и какого типа будет возвращаемое значение, ибо...

Записать из файлов данные о людях (ф.и.о. , дата рожд) в вектор - C++
Всем халоу, тут такая задачка: надо из двух файлов с разными данными о людях (1 файл - уникальный код, ф.и.о. , дата рожд, номер тел; 2...

записать несколько элементов в вектор сразу, как в массиве - C++
Добрый день, форум. Возможно ли в векторе записать несколько элементов одним разом, как в массиве? Например: массив: int massive =...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.