Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
9 / 2 / 0
Регистрация: 14.08.2018
Сообщений: 17
1

Признак конца string

13.09.2018, 01:14. Показов 6104. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Хочу пробежаться по каждому символу объекта класса string циклом while. И к примеру вывести на экран каждый из них. Цикл будет в функции, параметр которой указатель на строку. Не могу понять какое условие окончания строки нужно поместить в цикл. Примерно так
C++
1
2
3
4
5
6
7
8
9
string n = "731671765";
void func(string *ptr)
{
    while (?) {
        //.....
        cout << ptr->at(i);
        //.....
    }
}
И какие варианты доступа к каждому символу есть вместо метода at()?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.09.2018, 01:14
Ответы с готовыми решениями:

признак конца ввода
Здравствуйте. Учу С++ по книге Дейтела так вот там пример программы #include &lt;iostream&gt;...

Задача, на признак конца ввода
Помогите пожалуйста

Visual Studio 2015 признак конца файла
Вот есть такой простейший кусок кода: int main() { vector&lt;double&gt; vec; double x; cout &lt;&lt;...

дана последовательность действительных чисел а1 а2 а3. признак конца последовательности 999
дана последовательность действительных чисел а1 а2 а3. признак конца последовательности...

4
14 / 11 / 3
Регистрация: 12.09.2018
Сообщений: 61
13.09.2018, 01:44 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void func(string *ptr) {
    string& s = *ptr;
    
    // версия 1
    for (auto iter = ptr->begin(); iter != ptr->end(); iter++) {
        cout << *iter << endl;
    }
    
    // версия 2
    for (auto symbol : s) {
        cout << symbol << endl;
    }
    
    // версия 3
    for (int i = 0; i < s.length(); i++) {
        cout << s[i] << endl;
    }
}
Добавлено через 55 секунд
Цитата Сообщение от Nikitich_ Посмотреть сообщение
параметр которой указатель на строку
Можно же по ссылке передавать:

C++
1
void func(string& str);
Добавлено через 36 секунд
Цитата Сообщение от Nikitich_ Посмотреть сообщение
И какие варианты доступа к каждому символу есть вместо метода at()
По индексу, например.
1
9 / 2 / 0
Регистрация: 14.08.2018
Сообщений: 17
13.09.2018, 01:57  [ТС] 3
Версия 1: без ключевого слова auto, не понятно какой тип возвращает begin() и end(). Пытался впилить что то типо string * p = ptr->end(). И использовать p как адрес конца строки. Ну в общем, теперь понял, какие заклинания нужны здесь.
Версия 2: Не понял что там происходит, если не сложно поясните.
Версия 3: На вид логично, не проверял
спс.

Добавлено через 3 минуты
Цитата Сообщение от martin23 Посмотреть сообщение
По индексу, например.
Доступ по индексу через указатель оказался для меня не так очевиден, вот нарыл его синтаксис (*ptr)[№]
0
14 / 11 / 3
Регистрация: 12.09.2018
Сообщений: 61
13.09.2018, 02:21 4
Лучший ответ Сообщение было отмечено Nikitich_ как решение

Решение

Цитата Сообщение от Nikitich_ Посмотреть сообщение
Версия 1: без ключевого слова auto, не понятно какой тип возвращает begin() и end(). Пытался впилить что то типо string * p = ptr->end(). И использовать p как адрес конца строки. Ну в общем, теперь понял, какие заклинания нужны здесь.
тип std::string::iterator: http://www.cplusplus.com/refer... ing/begin/

Добавлено через 2 минуты
Цитата Сообщение от Nikitich_ Посмотреть сообщение
Версия 2: Не понял что там происходит, если не сложно поясните.
http://archive.kalnytskyi.com/... 11-part-1/
https://en.cppreference.com/w/... /range-for

Добавлено через 43 секунды
Цитата Сообщение от Nikitich_ Посмотреть сообщение
Доступ по индексу через указатель
Можно по ссылке передавать.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
13.09.2018, 05:31 5
Nikitich_, второй вариант самый актуальный.
range-based for
0
13.09.2018, 05:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.09.2018, 05:31
Помогаю со студенческими работами здесь

std::cin, eof не всегда принимается как признак конца файла
std::string text; char ch = 0; while(!std::cin.get(ch).eof()){ text.append(1, ch); }...

Ввести с клавиатуры несколько строк, преобразовать их к верхнему регистру. признак конца finish
Ввести с клавиатуры несколько строк, преобразовать их к верхнему регистру. признаком конца ввода...

С клавиатуры вводятся целые числа. Признак конца ввода – 0. Определить количество минимальных значений.,
нужно написать программку срочно(С++) ...О_опомогите пожалуйста) ВОТ УСЛОВИЕ: С клавиатуры ...

Вводится последовательность символов. Признак конца ввода – точка. Посчитать количество символов не являющихся пробелами
Порядок выполнения работы 1.Изучите теоретическое обоснование и проанализируйте приведенные выше...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru