Member 12959299 Ответов: 2

Как использовать массивы строк и/или символов в классах...


I am writing a very simple c++ program to print the name of the sender, recepient and time of an  email message using classes. It shows the following errors. I am having difficulty using string and/or char arrays in classes. However, if I use single char, it does not show error. Please help me out.


Что я уже пробовал:

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
class message
{
private:
char sender[10];
char recipient[10];
int time;
public:
message (char s[10],char r[10],int t);
void print();
};
message::message (char s[10],char r[10],int t) 
{
sender=s;//  ERROR lvalue required
recipient=r;    // ERROR lvalue required
time=t;
} // ERROR parameter s and r are never used
void message::print()
{
cout<<"the sender is:  "<<sender;
cout<<"the recipient is : "<<recipient;
cout<<"current time is : "<<time;
}
main()
{
char s[10], r[10];
int t;
clrscr();
cout<<"enter senders name :";
cin>>s;
cout<<"enter recipient name :";
cin>>r;
cout<<"enter current time :";
cin>>t;
message c(s,r,t);
c.print();
getch();
}

2 Ответов

Рейтинг:
2

CPallini

Эй, ты используешь C++- а ты разве нет?
std::string это удобно, в таком раскладе:

#include <string>
#include <iostream>
using namespace std;

class message
{
  string sender;
  string recipient;
  int time;
public:
  message(string s, string r, int t): sender(s), recipient(r), time(t){}
  void print();
};

void message::print()
{
  cout << "the sender is " << sender << endl;
  cout << "the recipent is " <<  recipient << endl;
  cout << "the time is " << time << endl;

}

int main()
{ 
  string s,r;
  int t;
  cout<<"enter senders name :";
  cin>>s;
  cout<<"enter recipient name :";
  cin>>r;
  cout<<"enter time :";
  cin>>t; 
  message c(s,r,t);
  c.print();
}


Member 12959299

Когда я запускаю вышеуказанную программу, она показывает следующие ошибки :-

#include & lt;string>
#include <iostream>
использование пространства имен std;

сообщение класса
{
string sender; / / ожидаемое имя типа, объявление отсутствует
строку получателя;/*имя типа, как ожидается , несколько декларации по строке декларации по строке, декларации отсутствует */
интервал времени;
общественный:
сообщение (строка s, строка r, int t): отправитель (ы), получатель( r), время (t){}/
* ) ожидаемый */
недействительными печати();
};

void message:: print ()/ / ' message :: print не является членом 'message'
{
cout << "отправитель есть" < & lt; отправитель< & lt; endl;
соиь <&ЛТ; "в recipent является" &ЛТ;&ЛТ; получатель &ЛТ;< епси;
соиь <&ЛТ; "время" &ЛТ;&ЛТ; времени в << епси;

}

тап_п()
{
строка s, r;
int t;
cout<< " введите имя отправителя :";
Кин&ГТ;&ГТ;С; // не определено символ "S"
cout<< " введите имя получателя :";
cin>> r; / / неопределенный символ 'r'
cout<< " введите время :";
cin>> t;
сообщение c (s, r, t);//) ожидается
c. print (); // 'print' не является членом 'message', функция sh. re. a va.
} / / c присваивается значение, которое никогда не используется.





обратите внимание, что я использую компилятор tsuppourbo c и, насколько мне известно, он не поддерживает string, но поддерживает массивы char, поэтому не могли бы вы рассказать мне, как его использовать таким образом. Я буду вам очень обязан.

Member 12959299

строка отлично работает на других компиляторах онлайн. Turbo c-динозавр, но мой старший сказал мне работать над turbo c. - Спасибо, сэр.

Member 12959299

Он работает с использованием strcpy. Полная правильная программа:-
#include< stdio.h>
#включить & lt;conio. h>
#include<iostream.h>
#include<stdlib.h>
#include & lt;string.h>
сообщение класса
{
частный:
char отправитель[10], получатель[10];
интервал времени;
общественный:
сообщение (char s[10], char r[10], int t)
{
strcpy(отправитель, s);
strcpy(получатель, r);
время=t;
}
недействительными печати();
};
сообщение пустое::печать()
{
cout<< "\ N отправитель: "< & lt;отправитель;
cout<< "\ nhe recipient is : "< & lt;recipient;
соиь<&ЛТ;"время ncurrent\является : "&ЛТ;&ЛТ;времени;
}
главный()
{
char s[10], r[10];
int t;
clrscr();
cout<< " \nenter имя отправителя :";
cin>> s;
cout<< " \nenter имя получателя :";
cin>> r;
cout<< " \nenter текущее время :";
cin>> t;
сообщение c(s, r, t);
гр.печать();
геч();
}

Member 12959299

спасибо за вашу помощь, ребята. отсортированный.

Рейтинг:
15

Richard MacCutchan

Вы не используете stringс помощью char массивы. В этом случае вы не можете использовать такие выражения, как sender=s переписывать с одного на другое. Вам нужно использовать strcpy или аналогичная функция.


Member 12959299

не могли бы вы рассказать мне, как использовать массивы строк и символов для таких выражений, как
"отправитель=s". Я был бы благодарен.

Richard MacCutchan

Используйте строку.

Member 12959299

спасибо за ваше предложение, Мистер Маккатчен. Я использую компилятор turbo c++, и, насколько мне известно, он не принимает строки. Когда я попытался использовать строку, предложенную CPallini ниже, она показала ошибки, которые вы можете увидеть в моем ответе на комментарии CPallini. Так что я не знаю, как во всем этом разобраться.

Member 12959299

спасибо за ваше предложение, Мистер Маккатчен. Я использую компилятор turbo c++, и, насколько мне известно, он не принимает строки. Когда я попытался использовать строку, предложенную CPallini ниже, она показала ошибки, которые вы можете увидеть в моем ответе на комментарии CPallini. Так что я не знаю, как во всем этом разобраться.

Member 12959299

строка отлично работает на других компиляторах онлайн. Turbo c-динозавр, но мой старший сказал мне работать над turbo c. - Спасибо, сэр.

Richard MacCutchan

Вы должны поговорить со своим старшим и посмотреть, может ли он помочь вам понять, почему компилятор не принимает строковый тип. В качестве альтернативы вам нужно будет использовать strcpy функция для копирования текста из одного массива в другой.