Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
#1

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

24.01.2014, 19:36. Просмотров 1097. Ответов 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);
}

http://www.cyberforum.ru/cpp-beginners/thread1241824.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2014, 19:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вывод char из функции (C++):

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

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

Вывод массива char
Почему вообще работает этот код?(пробовал с целочисленным массивом,такого...

вывод массива char*
Подскажите, как вывести массив char без мусора? есть такой код: char* mes =...

Вывод unsigned char
вот задание: Создать абстрактный базовый класс Pair с виртуальными...

25
gromo
372 / 271 / 30
Регистрация: 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_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
24.01.2014, 19:46  [ТС] #3
также работать не будет
0
ValeryS
Модератор
7125 / 5393 / 669
Регистрация: 14.02.2011
Сообщений: 18,210
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
372 / 271 / 30
Регистрация: 04.09.2009
Сообщений: 1,214
24.01.2014, 19:50 #5
Цитата Сообщение от ValeryS Посмотреть сообщение
если count это строка
то нужно вернуть указатель на неё
а я и не заметил)
0
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
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
Модератор
7125 / 5393 / 669
Регистрация: 14.02.2011
Сообщений: 18,210
24.01.2014, 19:56 #7
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
ругается компилятор
для начала убрать const из функции
C++
1
2
3
4
char * words::GetCount()
{
   return count;
}
во вторых покажи наконец что такое count?
и как вообще реализован класс words?
1
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
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Эксперт С++
8020 / 4863 / 1424
Регистрация: 29.11.2010
Сообщений: 13,239
24.01.2014, 20:47 #9
Я попал на битву экстрасенсов!
Где весь код?

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
для начала убрать const из функции
предложу наоборот, добавить const!
C++
1
const char* getStr() const
что концептуально правильнее для get-метода
0
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
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Эксперт С++
8020 / 4863 / 1424
Регистрация: 29.11.2010
Сообщений: 13,239
24.01.2014, 21:00 #11
C++
1
buf = strtok(NULL , " ");
нет реализации конструктора и деструктора
0
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
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Эксперт С++
8020 / 4863 / 1424
Регистрация: 29.11.2010
Сообщений: 13,239
24.01.2014, 21:13 #13
Fene4ka_, если придет сантехник починить раковину, вы открутите кран, дадите ему и упорно будете скрывать весь остальной механизм?
Почему из вас все надо вытягивать? Как можно помочь в том, чего не видишь? Да хотя вы и проблему толком не озвучили. Мб у вас "Почему не работает" == "компилируется, но работает не так как хочу", а мы понимаем под этим совершенно другое. Да и в вашем случае тогда встает резонный вопрос. Как вы хотите? Только не говорите "чтобы заработало".

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

Добавлено через 22 секунды
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
или какие-то другие конструкторы и деструкторы реализовать нада ?
какие-то другие не надо, достаточно было показать эти.
0
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
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Эксперт С++
8020 / 4863 / 1424
Регистрация: 29.11.2010
Сообщений: 13,239
24.01.2014, 21:21 #15
C++
1
#define _CRT_SECURE_NO_WARNINGS
А вообще, это проблемы несовместимости последней VS со стандартом.
Раньше был warning, а теперь даже не дает скомпилировать корректный с точки зрения стандарта код, предлагая заменить нормальную функцию на проприетарную.
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.01.2014, 21:25 #16
Цитата Сообщение от MrGluck Посмотреть сообщение
А вообще, это проблемы несовместимости последней VS со стандартом.
Раньше был warning, а теперь даже не дает скомпилировать корректный с точки зрения стандарта код, предлагая заменить нормальную функцию на проприетарную.
Здесь описано, как можно отключить: http://www.cyberforum.ru/post5488517.html
1
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
24.01.2014, 21:25  [ТС] #17
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
#define _CRT_SECURE_NO_WARNINGS
А вообще, это проблемы несовместимости последней VS со стандартом.
Раньше был warning, а теперь даже не дает скомпилировать корректный с точки зрения стандарта код, предлагая заменить нормальную функцию на проприетарную.
и как это сделать ? максимально подробно плз
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16744 / 6635 / 860
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
24.01.2014, 21:30 #18
Fene4ka_, либо так, как по ссылке выше в посте #16, либо прописав в начале код из поста #15, который вы сцитировали, либо заменив strtok и т.д. на "безопасные" strtok_s и т.д...
0
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
24.01.2014, 21:44  [ТС] #19
сделал как в посте #16, но теперь проблема в том, что постоянно выводится первое слово, без остановки
0
MrGluck
Модератор
Эксперт CЭксперт С++
8020 / 4863 / 1424
Регистрация: 29.11.2010
Сообщений: 13,239
24.01.2014, 22:03 #20
Fene4ka_,
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
buf = strtok(NULL , " ");
1
24.01.2014, 22:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2014, 22:03
Привет! Вот еще темы с решениями:

Char unsigned char signed char длинна Кааак
Здравствуйте. char l = {0,0}; l = 0xff; Почему, меня, компилятор...

Вывод массива char* на консоль
Пытаюсь вывести массив чаров в консоль, но выходит какая-та белеберда. Вывод...

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

Ввод и вывод в массив char
#include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;locale.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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