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

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

26.11.2015, 13:36. Просмотров 440. Ответов 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;
    }
}

http://www.cyberforum.ru/cpp-beginners/thread1131083.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2015, 13:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как остановить цикл при окончании строки string (C++):

Как остановить цикл при вводе 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 файл и...

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

3
zss
Модератор
Эксперт С++
6952 / 6514 / 4135
Регистрация: 18.12.2011
Сообщений: 17,183
Завершенные тесты: 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
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,331
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
Привет! Вот еще темы с решениями:

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

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

Остановить цикл ввода последовательности, если введенное значение равно нулю.
В простую переменную последовательно вводятся числа. Окончание ввода 0. Сколько...

При передаче строки в функцию возникает string subscript out of range
Нужно было реализовать алгоритм сортировочной станции в обратную польскую...


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

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

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