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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 5.00
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
#1

вывод массива указателей String - C++

01.02.2010, 23:46. Просмотров 2085. Ответов 0
Метки нет (Все метки)

Есть строка str и указатель *string_str на строку типа String
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 #include <iostream>
 #include <windows.h>
 #include <fstream>
 #include <cstdlib>
 #include <string>
 #include <clocale>
 
 using namespace std;
 int main()
 {
    char* p_str;
    char str[35] = "world in zdc lgh szd"
    streamoff i;
    string *string_str;
 
    p_str = strtok(str, " ");
       string_str = new string [5];
       *string_str = p_str;
       
       for (int i=1; i<5; i++) {
             p_str = strtok('\0', " ");
             *string_str = p_str; 
             cout << *string_str << endl; //Работает
             string_str++;
       }
       
       for (int i=0; i<5; i++) {          
           cout << *string_str[i] << endl; //Неработает
       } 
 }
Как сделать вывод массива строк или произвольного члена массива string_str[], почему неработает
cout << *string_str[i] << endl; или cout << *string_str[4] << endl;?

Добавлено через 2 часа 26 минут
Проблема решилась переприсваиванием указателя на String *string_str
C++
1
2
3
string *b_str;
b_str = string_str;
cout <<  *b_str << endl; //выводит "world"
после этого вывод происходит и цикл не выбивает ошибки
C++
1
2
3
4
for (int i=0; i<5; i++) {          
           cout << *b_str << endl;//выводит "in"
           b_str++;
       }
Только показалось странным что вывод происходит не с первого слова "world" а со второго "in", возникает вопрос - 1. почему указатель сам перемещаеться еще до использования выражения "b_str++;"?

Добавлено через 5 часов 51 минуту
проблема решена
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 #include <iostream>
 #include <windows.h>
 #include <fstream>
 #include <cstdlib>
 #include <string>
 #include <clocale>
 
 using namespace std;
 int main()
 {
    char* p_str;
    char str[35] = "world in zdc lgh szd"
    streamoff i;
    string* string_str;
    string* b_str, stx;
 
    p_str = strtok(str, " ");
    string_str = new string [5];
    *string_str = p_str;
 
    b_str = string_str;
    stx = *b_str; //используем переменную stx для хранения значения по адресу b_str
       
       for (int i=1; i<5; i++) {
             cout << *b_str << endl; // выводит world
             p_str = strtok('\0', " ");
             *string_str = p_str; // что-то непонятное происходит в этом блоке, значение b_str увеличуеться на 1
             cout << *b_str << endl; // выводит in
             string_str++;
       }
       
       b_str = &stx; //получаем адрес первого слова
       cout << *b_str << endl; //выводит world
 
       system("PAUSE");
       return 0;
 }
Может кто-нибудь сможет объяснить что происходит в блоке
C++
1
2
3
4
5
6
7
        for (int i=1; i<5; i++) {
             cout << *b_str << endl; // выводит world
             p_str = strtok('\0', " ");
             *string_str = p_str; // что-то непонятное происходит в этом блоке, значение b_str увеличуеться на 1
             cout << *b_str << endl; // выводит in
             string_str++;
       }
Почему
C++
1
 *string_str = p_str;
влияет на указатель
C++
1
 *b_str
?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2010, 23:46     вывод массива указателей String
Посмотрите здесь:

Вывод массива на экран функцией с использованием указателей - C++
Привет, при написании функции возникла проблема: в помеченной комментарием строке выдало ошибку( Ошибка C2228 выражение слева от &quot;.size&quot;...

Как сделать вывод массива указателей char на экран? - C++
Доброго времени суток. Делал наброски на телефонный справочник с несколькими телефонными книгами внутри. При написании пользуюсь тем,...

Вывод массива string - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstring&gt; int main() { using namespace std; int sum = 0; int...

Вывод элементов массива string Рандомно - C++
Подскажите, как вывести n-ое кол-во элементов массива String в строку? Элементы не должны повторяться. Я так понял, что через цикл, но...

String массив, ввод и вывод элементов массива - C++
Здравствуйте, Подскажите пожалуйста, если есть массив типа string из 5 элементов, пользователь вводит один из элементов этого массива, ...

вектор string в масив указателей на char - C++
Доброго дня, комрады. Вот несколько дней как начал разбираться в С++ по 4-му вводному курсу липмана. наткнулся на задачку в общем-то...

Вывод вектора указателей - C++
Всем доброго времени суток. Есть такая проблема, пытаюсь написать шаблонный класс для древовидной структуры: template &lt;class T&gt; ...

Вывод контейнера указателей на экземпляры абстрактного класса - C++
Добрый день. Задача требует описать абстрактный класс и несколько наследников этого класса. Затем, описать контейнер (list)...

Вывод букв с помощью указателей (требуется помощь) - C++
Есть программа которая считывает слова из файла input.txt до тех пор пока они не закончатся. Я хочу в массив address помещать указатель на...

Осуществить вывод строк из файла, используя массив указателей на эти строки - C++
&quot;Написать программу, которая считывает текст из файла и выводит на экран только предложения, не содержащие запятых. &quot; вывод надо...

Программирование массива указателей - C++
Подскажите, в чем различие выделения памяти для массива указателей char **term;: term = (char **)malloc(10); и *term = (char...

Связь массива и указателей - C++
Доброго времени суток, начал учить указатели и тут такая задача: Дан массив целых чисел. Воспользовавшись указателями, поменяйте местами...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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