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

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

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

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

06.07.2013, 19:59. Просмотров 1098. Ответов 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++
Всем привет :) Начал изучать сей замечательный язык и появились кое-какие вопросы к гуру! Запутался в указателях... ...

Как в редакторе на с++ перейти на какую то конкретную строку? - C++
У меня операционная система FreeDos 1.2 работаю в среде Borland C++3.0 Отлаживаю код в турбо дебаггере с++ 3.0 по шагам и проблема в том,...

Найти в матрице строку с наименьшим числом на главной диагонали, и исключить всю строку - C++
Условие задачи : матрицу заполнить случайными значениями , найти в ней строку с наименьшим числом в главной диагонали и исключить всю...

Разработать и испытать функцию, которая переворачивает строку и возвращает указатель на перевёрнутую строку - C++
Разработать и испытать функцию, которая переворачивает строку и возвращает указатель на перевёрнутую строку. Прототип функции инверсии...

Как очистить всю строку? - C++
У меня есть строка, в этой строке я храню информацию, потом ее вывожу на экран. Как сделать так, чтобы эта строка стала пустой и можно было...

Как прочитать всю строку? - C++
TArray &lt;std::wstring&gt; Result; std::string Buffer; std::ifstream File; std::wcout&lt;&lt;&quot;Opening the project...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
5417 / 4813 / 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
5417 / 4813 / 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
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 21:24 #8
В С++ есть альтернатива указателям - ссылки.
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
07.07.2013, 21:27  [ТС] #9
Цитата Сообщение от alsav22 Посмотреть сообщение
В С++ есть альтернатива указателям - ссылки.
До этого я еще не дошел
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2013, 21:27
Привет! Вот еще темы с ответами:

Getline не считывает строку целиком - C++
getline в string не хочет считывать полностью строку, а только до первого пробела. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Прочитать из файла строку целиком - C++
char s1,s2,s3,s4; //Переменная будет считывать строку ifstream in (&quot;D:\\1.txt&quot;); //Открываем файл для считывания информации ...

Как описать в структуре строку не через указатель - C++
Есть структура struct InfoBuf { size_t Len; char Data; / ??? static InfoBufType* Create(size_t Size, char* Val){ InfoBufType*...

Как найти первое вхождение строки и вернуть всю строку(в которой искали) до конца с места вхождения? - C++
Учу С++ по книге Страуструпа, есть такое задание в конце главы : &quot;Напишите функцию char* findx(const char* s, const char* х) , нахо* ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.07.2013, 21:27
Ответ Создать тему
Опции темы

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