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

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

Войти
Регистрация
Восстановить пароль
 
Ascold
0 / 0 / 0
Регистрация: 27.01.2015
Сообщений: 107
#1

Как остановить цикл при окончании строки string - C++

26.11.2015, 13:36. Просмотров 181. Ответов 3
Метки нет (Все метки)

Пробую разделять на слова, разделенные пробелом строку string. Внутренний код цикла работает исправно, но сам цикл не останавливается (выводит пробелы после того, как вывел слова). Как остановить этот цикл после полного разделения строки?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Split(string str)
{
    string separ(" ");
    string temp = str;
    while (true) {
        int pos = temp.find(separ); // Позиция первого символа строки-разделителя.
        if (pos != 0) {
            string word = temp.substr(0, pos); // Строка до разделителя.
            cout << word << endl;
            temp = temp.substr(pos + separ.length()); // Строка после разделителя.
        }
        else
            break;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2015, 13:36     Как остановить цикл при окончании строки string
Посмотрите здесь:

C++ Строки STRING - как присвоить в S - B
C++ как остановить цикл ?
Как остановить цикл при вводе enter? C++
Ошибка при посимвольной записи из строки char в строку string C++
Выйти из цикл по окончании всех строк в файле C++
Как остановить цикл при прекращении ввода C++
C++ Остановить цикл ввода последовательности, если введенное значение равно нулю.
C++ Как записать длину строки типа string в переменную
C++ Как вычленить цифры из строки std::string?
C++ Как вернуть цикл на начало строки?
C++ Как сравнить две строки типа string?
C++ Компилятор выдает предупреждение при инициализации строки:deprecated conversion from string constant to char*

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6111 / 5714 / 1849
Регистрация: 18.12.2011
Сообщений: 14,593
Завершенные тесты: 1
26.11.2015, 13:40     Как остановить цикл при окончании строки string #2
C++
1
2
3
4
5
6
7
8
#include <sstream>
void Split(string str)
{
    istringstream ss(str);
    string word;
    while (ss>>word)
            cout << word << endl;
}
Ascold
0 / 0 / 0
Регистрация: 27.01.2015
Сообщений: 107
26.11.2015, 13:48  [ТС]     Как остановить цикл при окончании строки string #3
Да, но istringstream не учитывает разделителем знаки препинания, только пробелы.
nmcf
4460 / 3798 / 1284
Регистрация: 14.04.2014
Сообщений: 14,922
26.11.2015, 13:58     Как остановить цикл при окончании строки string #4
C++
1
if (pos != string::npos) {
Yandex
Объявления
26.11.2015, 13:58     Как остановить цикл при окончании строки string
Ответ Создать тему
Опции темы

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