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

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

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

Указатель на строку: как выводить не всю строку целиком, а конкретную букву - C++

06.07.2013, 19:59. Просмотров 996. Ответов 8
Метки нет (Все метки)

Есть программка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
using namespace std;
void fn_str1(int i,string str1,char *p)
{
    p=&str1[0];
    for(i=0;i<str1.length();++i)
    {
        
        p=&str1[i];
    }
}
 
int main()
{
    int i;
    char *p;
    string str1,str2;
    cin>>str1>>str2;
    p=&str1[0];
    fn_str1(i,str1,p);
}
Как в функции fn_str1 при помощи указателя в цикле
C++
1
2
3
4
5
for(i=0;i<str1.length();++i)
    {
        p=&str1[i];
 
    }
выводить не всю строку целиком, а конкретную букву на которую указывает указатель??? Вывод вроде cout<<str[i] мне не подходит. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2013, 19:59     Указатель на строку: как выводить не всю строку целиком, а конкретную букву
Посмотрите здесь:

Как очистить всю строку? C++
C++ Почему putchar() выводит всю строку?
Как прочитать всю строку? C++
C++ Как получить число типа int, если имеется указатель на строку с этим числом?
Найти в матрице строку с наименьшим числом на главной диагонали, и исключить всю строку C++
Как описать в структуре строку не через указатель C++
Есть ли функция, читающая файл целиком и записывающая его в одну строку? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
06.07.2013, 20:25     Указатель на строку: как выводить не всю строку целиком, а конкретную букву #2
Мне кажется, что вы хотите странного;
C++
1
2
3
4
5
for(i=0;i<str1.length();++i)
    {
        p=&str1[i];
        cout << *p << "\n";
    }
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 01:00     Указатель на строку: как выводить не всю строку целиком, а конкретную букву #3

Не по теме:

Nikko12, на ваш код страшно смотреть.



Добавлено через 10 минут
Хотя бы так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void fn_str1(char *p, int size)
{
    while (size)
    {
        cout << *p;
        ++p;
        --size;
    }
}
 
int main()
{
    char *p;
    string str1;
    cin >> str1;
    p = &str1[0];
    int size = str1.size();
    fn_str1(p, size);
 
    return 0;
}
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 10:47  [ТС]     Указатель на строку: как выводить не всю строку целиком, а конкретную букву #4
alsav22, А можно узнать в чем страх заключается?

Добавлено через 13 минут
Цитата Сообщение от Hrobak Посмотреть сообщение
Мне кажется, что вы хотите странного;
Что Вы имеет ввиду?
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
07.07.2013, 12:29     Указатель на строку: как выводить не всю строку целиком, а конкретную букву #5
1. Если так уж хотите дополнительной переменной, просто создайте переменную типа char и передайте в функцию по ссылке. ИМХО, указатель здесь не нужен.
2. Зачем создавать переменную i в main (), если вы ее используете только в цикле в другой функции. Просто напишите в fn_str1 цикл for (int i=0;...;++i), да и в принципе посимвольно строку я бы по-другому выводил.
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 21:11     Указатель на строку: как выводить не всю строку целиком, а конкретную букву #6
Цитата Сообщение от Nikko12 Посмотреть сообщение
А можно узнать в чем страх заключается?
В полной нелогичности кода. Создаёте в main() строку и указатель на неё, и передаёте в функцию и указатель и строку. Зачем? Достаточно указателя, для этого, наверное, его и создавали. В функции вы опять (в main() уже делали) присваиваете указателю адрес начала строки, а он его уже имеет. Насчёт i уже написали.
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 21:18  [ТС]     Указатель на строку: как выводить не всю строку целиком, а конкретную букву #7
alsav22, Когда освою в совершенстве с++ буду писать правильно, а пока бывают и неудачные примеры.

Добавлено через 1 минуту
К тому же я не совсем еще понимаю как работают указатели и функции (я их боюсь использовать, мне кажется без них намного проще).
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 21:24     Указатель на строку: как выводить не всю строку целиком, а конкретную букву #8
В С++ есть альтернатива указателям - ссылки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2013, 21:27     Указатель на строку: как выводить не всю строку целиком, а конкретную букву
Еще ссылки по теме:

Указатель на строку C++
Getline не считывает строку целиком C++
C++ Объяснить почему указатель выводит всю строку сразу, а не адрес первого элемента
Прочитать из файла строку целиком C++

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

Или воспользуйтесь поиском по форуму:
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 21:27  [ТС]     Указатель на строку: как выводить не всю строку целиком, а конкретную букву #9
Цитата Сообщение от alsav22 Посмотреть сообщение
В С++ есть альтернатива указателям - ссылки.
До этого я еще не дошел
Yandex
Объявления
07.07.2013, 21:27     Указатель на строку: как выводить не всю строку целиком, а конкретную букву
Ответ Создать тему
Опции темы

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