Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Operator Overloading ??? Potrebna Pomoc

[es] :: C/C++ programiranje :: Operator Overloading ??? Potrebna Pomoc

[ Pregleda: 2084 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ouros
Seattle, WA

Član broj: 342
Poruke: 275
*.uv2a.csupomona.edu

ICQ: 83493423


Profil

icon Operator Overloading ??? Potrebna Pomoc10.02.2002. u 06:29 - pre 269 meseci
Narode treba mi pomoc. Totalno sam se izgubio. Imam sledeci kod sa operator overloading, glup program, znaci uzima broj telefona, tipa (xxx) xxx-xxxx, e sad kad hocu da proverim svaki karatker ponaosob, da vidim da li je stavio otvorenu zagradu ( pre pocetka pozivnog ili ne ...
zbunim se. mislim ovo mi je lako da uradim sa stringovima, ali me zbunjuje ovaj kod. ako neko ima vremena da mi pomogne bio bih zahvalan.
znaci treba mi hint: ako neko recimo umesto ovog nacina (123)123-4567

napise ovaj broj 123-456-7890 kako da proverim svaki character ali da ga ne izgubim.

ako uzmem recimo promenljivu tipa

char checkThis;

i onda

input >> setw(1) >> checkThis;
if (checkThis == '(') {
// on mi je vec pojeo prvi karakter, tako da nemogu vise da se vratim na njega

nadam se da ste me razumeli.
evo koda,pa ako moze neko da proba i da mi pomogne

#include <iostream>

using std::cout;
using std::cin;
using std::endl;
using std::ostream;
using std::istream;

#include <iomanip>

using std::setw;

class PhoneNumber {
friend ostream &operator<<( ostream&, const PhoneNumber & );
friend istream &operator>>( istream&, PhoneNumber & );

private:
char areaCode[ 4 ]; // 3-digit area code and null
char exchange[ 4 ]; // 3-digit exchange and null
char line[ 5 ]; // 4-digit line and null
};

// Overloaded stream-insertion operator (cannot be a member function if we // would like to invoke it with cout << somePhoneNumber;).
ostream &operator<<( ostream &output, const PhoneNumber &num )
{
output << "(" << num.areaCode << ") "
<< num.exchange << "-" << num.line;
return output; // enables cout << a << b << c;
}

istream &operator>>( istream &input, PhoneNumber &num )
{

input.ignore();
input >> setw( 4 ) >> num.areaCode; // input area code

input >> setw(2) >> checkString;
if (checkString == ')')
input >> setw( 4 ) >> num.exchange; // input exchange

input.ignore( ); // skip dash (-)
input >> setw( 5 ) >> num.line; // input line

return input; // enables cin >> a >> b >> c;
}

int main( )
{
PhoneNumber phone; // create object phone

cout << "Enter phone number in the form (123) 456-7890:\n";

// cin >> phone invokes operator>> function by
// issuing the call operator>>( cin, phone ).
cin >> phone;

// cout << phone invokes operator<< function by
// issuing the call operator<<( cout, phone ).
cout << "The phone number entered was: " << phone << endl;
return 0;
}




Hvala
Uros

 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
209.132.90.*



+6 Profil

icon Re: Operator Overloading ??? Potrebna Pomoc10.02.2002. u 18:19 - pre 269 meseci
Bojim se da te ne razumem najbolje. Ako pitaš kako da vidiš koji je sledeći simbol u istream-u, a da ga ne pokupiš odatle, koristi peek(). Primer:

Code:

#include <iostream>
using namespace std;

int main( ) 
{
   char c[10], c2;
   cout << "Type 'abcde': ";

   c2 = cin.peek( );
   cin.getline( &c[0], 9 );

   cout << c2 << " " << c << endl;
}


 
Odgovor na temu

[es] :: C/C++ programiranje :: Operator Overloading ??? Potrebna Pomoc

[ Pregleda: 2084 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.