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

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

Войти
Регистрация
Восстановить пароль
 
 
Fene4ka_
91 / 91 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
#1

Вывод char из функции - C++

24.01.2014, 19:36. Просмотров 961. Ответов 25
Метки нет (Все метки)

выводит первую букву слово, подскажите ошибку ...

исполняемый файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include "Header.h"
#include <iostream>
using namespace std;
 
char words::GetCount() const
{
    return *count;
}
 
void words::SetCount()
{
    cin.getline(count, 256);
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2014, 19:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод char из функции (C++):

Различное поведение функции которая копирует строки с char* t и char t[] - C++
столкнулся с ситуацией которую не могу объяснить пишем функцию которая копирует одну строку в другую: void strstr(char* t,...

Реализация функции char *padl(const char *string, int len, int c=' ') - C++
Реализовать функцию возвращающую указатель на новую строку длины len, полученную из string либо удалением лишних символов слева , либо...

Char вывод - C++
Как вывести символы из массива символов char числа?

вывод массива char* - C++
Подскажите, как вывести массив char без мусора? есть такой код: char* mes = new char; int i = 0; for (string::iterator iter =...

Вывод массива char - C++
Почему вообще работает этот код?(пробовал с целочисленным массивом,такого результата как тут не наблюдается)Он выводит элементы массива и...

Вывод переменной типа char - C++
Переменная x типа char. x = 65; cout &lt;&lt; x; Так выводиться &quot;A&quot;. x = 64; cout &lt;&lt; x+1;

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
24.01.2014, 19:44 #2
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
C++
1
2
3
4
char words::GetCount() const
{
return *count;
}
C++
1
2
3
4
char words::GetCount() const
{
     return count;
}
если мои телепатические способности не подвели
0
Fene4ka_
91 / 91 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
24.01.2014, 19:46  [ТС] #3
также работать не будет
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,849
24.01.2014, 19:49 #4
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
C++
1
2
3
4
char words::GetCount() const
{
    return *count;
}
функция может вернуть число(символ) char
если count это строка
то нужно вернуть указатель на неё
C++
1
2
3
4
char * words::GetCount() const
{
   return count;
}
0
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
24.01.2014, 19:50 #5
Цитата Сообщение от ValeryS Посмотреть сообщение
если count это строка
то нужно вернуть указатель на неё
а я и не заметил)
0
Fene4ka_
91 / 91 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
24.01.2014, 19:51  [ТС] #6
Цитата Сообщение от ValeryS Посмотреть сообщение
функция может вернуть число(символ) char
если count это строка
то нужно вернуть указатель на неё
C++
1
2
3
4
char * words::GetCount() const
{
   return count;
}
ругается компилятор
Error 1 error C2440: 'return' : cannot convert from 'const char [256]' to 'char *'
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,849
24.01.2014, 19:56 #7
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
ругается компилятор
для начала убрать const из функции
C++
1
2
3
4
char * words::GetCount()
{
   return count;
}
во вторых покажи наконец что такое count?
и как вообще реализован класс words?
1
Fene4ka_
91 / 91 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
24.01.2014, 20:25  [ТС] #8
действительно без const заработало, плюсик

Добавлено через 27 минут
может еще подскажите почему не работает ?
C++
1
2
3
4
5
6
7
8
9
void words::list_words()
{
    char* buf = strtok(count, " ");
    while (buf)
    {
        cout << "buf" << endl;
        strtok(NULL , " ");
    }
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
24.01.2014, 20:47 #9
Я попал на битву экстрасенсов!
Где весь код?

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
для начала убрать const из функции
предложу наоборот, добавить const!
C++
1
const char* getStr() const
что концептуально правильнее для get-метода
0
Fene4ka_
91 / 91 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
24.01.2014, 20:57  [ТС] #10
main
C++
1
2
3
4
5
6
7
8
int _tmain(int argc, _TCHAR* argv[])
{
    words Object;
    Object.SetCount();
    cout << Object.GetCount() << endl;
    Object.list_words();
    return 0;
}
заголовок
C++
1
2
3
4
5
6
7
8
9
10
11
class words
{
public:
    words();
    ~words();
    char* GetCount();
    void SetCount();
    void list_words();
private:
    char count[256];
};
исполняемый
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char* words::GetCount()
{
    return count;
}
 
void words::SetCount()
{
    cin.getline(count, 256);
}
 
void words::list_words()
{
    char* buf = strtok(count, " ");
    while (buf)
    {
        cout << "buf" << endl;
        strtok(NULL , " ");
    }
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
24.01.2014, 21:00 #11
C++
1
buf = strtok(NULL , " ");
нет реализации конструктора и деструктора
0
Fene4ka_
91 / 91 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
24.01.2014, 21:02  [ТС] #12
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
buf = strtok(NULL , " ");
нет реализации конструктора и деструктора
C++
1
2
3
4
5
6
7
8
9
10
11
12
words::words()
{
    cout << "program successfully launched" << endl
         << "-----------------------------" << endl;
}
 
words::~words()
{
    cout << "-----------------------------" << endl
         << "program has been successfully completed" << endl;
    system("pause");
}
или какие-то другие конструкторы и деструкторы реализовать нада ?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
24.01.2014, 21:13 #13
Fene4ka_, если придет сантехник починить раковину, вы открутите кран, дадите ему и упорно будете скрывать весь остальной механизм?
Почему из вас все надо вытягивать? Как можно помочь в том, чего не видишь? Да хотя вы и проблему толком не озвучили. Мб у вас "Почему не работает" == "компилируется, но работает не так как хочу", а мы понимаем под этим совершенно другое. Да и в вашем случае тогда встает резонный вопрос. Как вы хотите? Только не говорите "чтобы заработало".

Тут все за вас приходится дописывать, угадывать, додумывать. А ведь при правильно составленном вопросе ответ получили бы сразу и не устраивали бы тут шоу (как то, что на ТНТ идет).

Добавлено через 22 секунды
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
или какие-то другие конструкторы и деструкторы реализовать нада ?
какие-то другие не надо, достаточно было показать эти.
0
Fene4ka_
91 / 91 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
24.01.2014, 21:16  [ТС] #14
сейчас не компилируется
Error 1 error C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

перестало работать после добавления
C++
1
2
3
4
5
6
7
8
9
void words::list_words()
{
    char* buf = strtok(count, " ");
    while (buf)
    {
        cout << "buf" << endl;
        strtok(NULL , " ");
    }
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
24.01.2014, 21:21 #15
C++
1
#define _CRT_SECURE_NO_WARNINGS
А вообще, это проблемы несовместимости последней VS со стандартом.
Раньше был warning, а теперь даже не дает скомпилировать корректный с точки зрения стандарта код, предлагая заменить нормальную функцию на проприетарную.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2014, 21:21
Привет! Вот еще темы с ответами:

Вывод массива char* на консоль - C++
Пытаюсь вывести массив чаров в консоль, но выходит какая-та белеберда. Вывод в: for (size_t i = 0; i &lt; 20; i++) { cout &lt;&lt;...

Вывод элемента массива типа char - C++
Объясните кто знает почему когда я вывожу i-й элемент массива посредством cout все отлично а когда printf то выдает ошибку: Тут все...

Инициализация структур и не вывод строчки char* - C++
Это вопрос не вопрос как делать. Это вопрос: &quot;Почему такие результаты&quot;. struct A { char *S; }; int...

вывод слова на экран с типом char. - C++
Помогите пожалуйста не могу решить программу... Дано слово. Вывести это слово на экран с 4 знаками &lt;&lt;+&gt;&gt; в начале слова и с 5 знаками &lt;&lt;*&gt;&gt;...


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

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

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