Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Ascold
1 / 1 / 3
Регистрация: 27.01.2015
Сообщений: 116
Завершенные тесты: 1
1

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

26.11.2015, 13:36. Просмотров 467. Ответов 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;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2015, 13:36
Ответы с готовыми решениями:

Как остановить цикл при прекращении ввода
Как остановить цикл, если не было введено числа(2 раза нажать Enter )?...

Как остановить цикл при вводе enter?
#include &lt;iostream&gt; using namespace std; int main() { for (;;) ...

как остановить цикл ?
у меня есть цикл : do{ cout&lt;&lt;&quot;vvedite celoe chislo: &quot;&lt;&lt;endl; cin&gt;&gt;a; ...

Как остановить цикл?
#include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;math.h&gt; using namespace...

Выйти из цикл по окончании всех строк в файле
Привет Всем буду Благодарен за все ответы. Программа открыает TXT файл и...

3
zss
Модератор
Эксперт С++
7178 / 6677 / 4226
Регистрация: 18.12.2011
Сообщений: 17,622
Завершенные тесты: 1
26.11.2015, 13:40 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;
}
1
Ascold
1 / 1 / 3
Регистрация: 27.01.2015
Сообщений: 116
Завершенные тесты: 1
26.11.2015, 13:48  [ТС] 3
Да, но istringstream не учитывает разделителем знаки препинания, только пробелы.
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
26.11.2015, 13:58 4
C++
1
if (pos != string::npos) {
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2015, 13:58

Как можно считывать из строки (std::string или char*) данные при помощи cin
Как можно считывать из строки (std::string или char*) данные при помощи cin...

Ошибка при присвоении argv[1] переменной string. Как конвертировать к типу string?
&quot;call of an object of a class type without appropriate operator() or...

Ошибка при окончании ввода чисел в вектор
Задача:Напишите программу. считывающую и сохраняюшую ряд целочисленных...


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

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

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