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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 32, средняя оценка - 4.94
Zain
0 / 0 / 0
Регистрация: 25.05.2010
Сообщений: 12
#1

Передача стринга в функцию - C++

29.05.2010, 04:48. Просмотров 4540. Ответов 16
Метки нет (Все метки)

Всем привет!
Вот возникла такая проблемка: стринг не передается в функцию, Борланд выдает ошибку. Я в си ++ новичок, но думаю, видимо ошибка в самой функции, и скорее всего связана она с длиной строки, только я не знаю как это исправить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void search_prkl(prkl *wezel, string *str)
{  if(wezel==NULL && (*str == wezel->nazwa)){
        cout << "etap 1";getch();
 
 
        cout <<endl<<endl<<wezel->id << "  "<< wezel->nazwa <<endl;
        cout << "E-mail\t"<< wezel->mail <<"\nTelefon\t"<<wezel->telefon << endl<<"Stanowisko:  "<<wezel->stadr;
        cout <<"\nNR konta\t"<<wezel->konto<<endl<<endl;
}
if(wezel==NULL && *str != wezel->nazwa) cout << "\nNic nie znaleziono\n";
 
   else {
         search_prkl(wezel->right,str);
         }
 
  }
А вот фрагмент ее вызова в функции майн:
C++
1
2
3
4
5
tmp = new string;
                                      getline(cin,*tmp);
                                      cout << *tmp;getch();
 
                                      search_prkl(root,tmp);
Благодарю за помощь и понимание=)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2010, 04:48     Передача стринга в функцию
Посмотрите здесь:

вывод константного стринга..срочно - C++
детский глупый вопрос,почему то все равно туплю: cin&gt;&gt;&quot;W=false&quot;; binary '&gt;&gt;' : no operator found which takes a right-hand operand of...

Передача в функцию - C++
вот есть такие строки кода: typedef vector&lt; vector&lt;char&gt; &gt; string_sound; void sound_func(string_sound &amp;text_sound, int sum_words)...

Передача в функцию - C++
компилятор ругается на int sumcolumn (int **a, int n) sumcolumn(a,m) почему не могу передать массив i*1, таким образом? ...

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

Передача указателя в функцию - C++
Поиском не пользовался, возможно данный вопрос уже проскакивал. Проблема том, что VS2010 на отрез отказывается передавать указатель на...

Передача объекта в функцию - C++
Нужно передать в функцию void Openz(Array &amp;a) { int**buff = a.getarr(); for (int i(0); i &lt; 10; i++) { for (int j(0);...

Передача массивов в функцию - C++
M128K145, Тема: Передача масивів у функцію. Задание: Виконати завдання лабораторних робіт №13 (Програмування операцій з одновиміпними...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.05.2010, 07:36     Передача стринга в функцию #2
классы лучше передавать по ссылке, а не указателю
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
29.05.2010, 09:33     Передача стринга в функцию #3
Цитата Сообщение от fasked Посмотреть сообщение
классы лучше передавать по ссылке, а не указателю
почему?

Zain, на будущее - текст ошибки не помешал бы

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void search_prkl(string *str)
{
    *str = "new string";
}
 
int main()
{
    string *tmp = new string();
    getline(cin, *tmp);
    cout << *tmp << endl;
    search_prkl(tmp);
    cout << *tmp;
 
    return 0;
}
Zain
0 / 0 / 0
Регистрация: 25.05.2010
Сообщений: 12
29.05.2010, 11:02  [ТС]     Передача стринга в функцию #4
Sorry за дотошность, но я не понял, как это будет работать...
Мне нужно чтобы по заданному значению, в данном случае фамилии наити в дереве елемент и выписать все данные.
Zain
0 / 0 / 0
Регистрация: 25.05.2010
Сообщений: 12
29.05.2010, 11:08  [ТС]     Передача стринга в функцию #5
А вот сама ошибка:
Миниатюры
Передача стринга в функцию  
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.05.2010, 11:15     Передача стринга в функцию #6
Цитата Сообщение от Roma_F Посмотреть сообщение
почему?
C++
1
2
3
4
5
6
7
8
9
10
11
int foo(const std::string * str) { 
   return 1;
}
 
void bar(int num) {
}
 
int main()
{
   bar(foo("qwerty"));
}
Ошибка.

К чему все эти танцы, если вот так ошибки не будет:
C++
1
2
3
4
5
6
7
8
9
10
11
int foo(const std::string & str) { 
   return 1;
}
 
void bar(int num) {
}
 
int main()
{
   bar(foo("qwerty"));
}
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
29.05.2010, 11:18     Передача стринга в функцию #7
Цитата Сообщение от Zain Посмотреть сообщение
как это будет работать
что именно
Zain
0 / 0 / 0
Регистрация: 25.05.2010
Сообщений: 12
29.05.2010, 11:19  [ТС]     Передача стринга в функцию #8
А что такое foo bar etc? Я новичок в C++, такого еще не встречал.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.05.2010, 11:20     Передача стринга в функцию #9
Добавлено через 1 минуту
Цитата Сообщение от Zain Посмотреть сообщение
А что такое foo bar etc? Я новичок в C++, такого еще не встречал.
это просто пример на тему "почему в таких задачах лучше передача по ссылке, а не указателю"
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
29.05.2010, 11:22     Передача стринга в функцию #10
Цитата Сообщение от fasked Посмотреть сообщение
Ошибка.
К чему все эти танцы, если вот так ошибки не будет:
и какое отношение это всё имеет к утверждению "классы лучше передавать по ссылке, а не указателю"?
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.05.2010, 11:28     Передача стринга в функцию #11
В проверке указателя на NULL поставьте вместо логического и (&&) логическое или (||)

Добавлено через 5 минут
Цитата Сообщение от Roma_F Посмотреть сообщение
и какое отношение это всё имеет к утверждению "классы лучше передавать по ссылке, а не указателю"?
мне кажется прямое. как минимум по ссылке нельзя будет передать null.
Roma_F
29.05.2010, 11:31
  #12

Не по теме:

Цитата Сообщение от fasked Посмотреть сообщение
как минимум по ссылке нельзя будет передать null.
это такая катастрофа?
по моему всё зависит от ситуации, поэтому я бы согласился с этим утверждением, если его немного переформулировать "string лучше передавать по ссылке, а не указателю"

fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.05.2010, 11:32     Передача стринга в функцию #13
Цитата Сообщение от fasked Посмотреть сообщение
В проверке указателя на NULL поставьте вместо логического и (&&) логическое или (||)
то есть судя по ошибке, которая у вас выскакивает происходит попытка чтения из нулевого адреса памяти. видимо указатель либо на строку, либо на структуру равен 0. то есть надо сделать проверку
и вместо:
C++
1
if(wezel==NULL && (*str == wezel->nazwa))
написать так:
C++
1
if(wezel==NULL || str == NULL ||  (*str == wezel->nazwa))
Zain
0 / 0 / 0
Регистрация: 25.05.2010
Сообщений: 12
29.05.2010, 11:37  [ТС]     Передача стринга в функцию #14
Цитата Сообщение от fasked Посмотреть сообщение
В проверке указателя на NULL поставьте вместо логического и (&&) логическое или (||)

[size="1"][color="grey"]
Заменил, работает только не так как нужно: когда заменил проверку на НУЛЛ и в проверку в рекурсии
то в находит только первый елемент, а когда заменил проверку на НУЛЛ на ||
а проверку в рекурсии оставил && то находит каждый елемент, но в конце выдает ту же ошибку...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2010, 11:40     Передача стринга в функцию
Еще ссылки по теме:

Передача аргументов в функцию - C++
как передать аргумент в функцию по указателю? нашел только по значению: int sqr(int x); int main() { int t=10; ...

Передача матрицы в функцию - C++
Всем здравствуйте, не совсем понимаю концепцию объявления идентификатора trans, объясните, пожалуйста, как нужно его объявить? ...

Передача вектора в функцию - C++
void foo(vector&lt;int&gt; x) { //Тело функции } void foo(vector&lt;int&gt; &amp;x) { //Тело функции } Пишут что в первой записи все...

Передача в функцию аргумента - C++
Помогите пожалуйста разобраться с таким вопросом: void concatInt(int win, int vin) { win += vin; } int w = 10, v = 10; ...

передача матрицы в функцию - C++
всем привет! пишу программу,которая просто в классе суммирует матрицу (пусть для простоты 3*3) но--не могу никак сделать такую вещь--в...


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

Или воспользуйтесь поиском по форуму:
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
29.05.2010, 11:40     Передача стринга в функцию #15
C++
1
2
3
4
if(wezel !=NULL && str != NULL)
    if (*str == wezel->nazwa)
    {
        ....
Yandex
Объявления
29.05.2010, 11:40     Передача стринга в функцию
Ответ Создать тему
Опции темы

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