Napisano: 05 Dec 2013 23:12
Наведени код илуструје идеју, остаје ти да сам преклопиш оператор >>.
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
string *str = new string;
string *stringcic = new string;
system("chcp 1251"); //Windows
while(cin>>*stringcic){
if (*stringcic == "q") break;
*str+=*stringcic+" ";
}
cout<<*str<<endl;
system("pause");
return 0;
}
Dopuna: 13 Dec 2013 15:02
Професор je очигледно желео да студенти увежбају преклапање оператора, па је зато искључио употребу методе getline().
Ево завршеног примера у коме је дефинисана помоћна класа tekst и њој прилагођени - преклопљени оператор >>. Илуструје се уношење текста са размацима.
#include <iostream>
#include <string>
using namespace std;
class tekst{
public :
string str;
public:
friend istream& operator>>(istream& input, tekst& t){
string stringic;
while(input>>stringic){
if (stringic == "q") break;
t.str += stringic + " ";
}
return input;
}
tekst(){
}
};
int main(){
system("chcp 1251 >> null.tmp"); //Windows
string *s = new string;
tekst t;
cin >> t;
*s = t.str;
cout << endl << "*s = " << *s << endl;
system("pause");
}
Што се тиче ћириличности фонта коришћеног за унос, само треба подесити Defaults фонт конзоле (на јуникс - сличним системима ово је сувишно).
|