PDA

View Full Version : c++ getline


Rigo007
15-07-2004, 17:34
int main() {

string s1,s2,s3;

cout << " Immetti la prima stringa: ";
getline(cin,s1);

cout << " Immetti la seconda stringa: ";
getline(cin,s2);

cout << " Immetti la terza stringa: ";
getline(cin,s3);

cout << s1+s2+s3 << endl;
}

perchè con il comando getline nn riesco a memorizzare in s2 la stringa da me immessa nella giusta posizione?

es. immetti la prima stringa: XXX
immetti la seconda stringa: YYY
immetti la terza stringa: ZZZ

out: XXXYYYZZZ

cionci
16-07-2004, 02:10
A me funziona proprio come hai scritto nell'esempio...

Rigo007
16-07-2004, 17:12
sotto linux anche a me!
il problema è sotto windows utilizzando il microsoft visual studio c++!

cionci
17-07-2004, 01:54
L'avevo provato sotto Windows con MinGW32...
Ora l'ho provato con VC++...ed hai ragione !!!
A me fa un gioco strano... Dalla seconda coppia di istruzioni in poi mi chiede prima l'input e poi mi presenta l'output...e dopo c'è anche un input fasullo dopo il terzo output... :boh:

Mi sa tanto di bug...

Rigo007
17-07-2004, 13:06
già...uffi...io devo fare il mio progetto in win...mi sa ke dovrò smattetare con degli cin.ignore o cose simili

cionci
17-07-2004, 14:15
Usa MinGW Developer Studio da www.parinya.ca

Rigo007
18-07-2004, 14:23
Perchè se definisco una funzione friend nella classe questa,
nel microsoft visual c++, nn riesce ad accerdermi ai membri privati?

cionci
18-07-2004, 19:02
Questa mi è sempre funzionata... Posta un po' un codice d'esempio...

Rigo007
19-07-2004, 13:06
#ifndef SCREEN_H
#define SCREEN_H

#include <iostream>
#include <string>

using namespace std;

class Screen {
public:
Screen(int hi=8,int wid=40,char bkground = '#');
int height() { return _height; }
int width() { return _width; }
bool isEqual(Screen&,Screen*);
void home() { _cursor = 0; }
void move(int,int);
inline char get() { return _screen[_cursor]; }
char get(int,int);
bool checkRange(int,int);
void copy(const Screen &);
void set(const string &s);
void set(char ch);


private:
string _screen;
string::size_type _cursor;
short _height,_width;

inline int remainingSpace();
// friend istream& operator>>(istream&,Screen&);
friend ostream& operator<<(ostream&,const Screen&); // perchè nn va?

};



#endif // SCREEN_H


.....

ostream& operator<<(ostream& os,const Screen& s) {
os << " < " << s._height << " , " << s._width << " > ";
os << s._screen;
return os;
}


nn riesco ad accedere a _height ecc... in questo modo!
forse potrei uscre le funzioni height() ke mi restituiscono tali valori?!
Però come friend dovrei avere accesso!!