Προς το περιεχόμενο

String contcatanation C++


elis88

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας, συγνώμη αν σας έχω ζαλίσει λίγο το τελευταίο καιρό.

 

Αντιμετωπίζω το εξης πρόβλημα. Προσπαθώ να επιστρέψω ενα String από μία μέθοδο. Όταν το return συνδέει δύο String όλα λειτουργούνε κανονικά, όταν όμως πάω να χώσω και έναν ακέραιο μέσα τότε μου βγάζει compile error. Πως διορθώνεται αυτό; Μιλάμε βέβαια για C++.

Δημοσ.

Θα μπορούσες να χρησιμοποιήσεις το std::stringstream το οποίο επιτρέπει την διαχείριση ενός char πίνακα ως stream και την άμεση μετατροπή αυτού σε STL string μορφή.

 

Στο παρακάτω παράδειγμα, ορίζουμε ένα stringstream (strBuffer) και περνάμε σε αυτό με την βοήθεια των τελεστών << δυο STL strings (strA & strB) χωρίζοντας μεταξύ τους με την προσθήκη ενός αριθμού (nMyNumber). Ύστερα ζητάμε από την stringstream να μας επιστρέψει το περιεχόμενο της σε μορφή strings με την μέθοδο .str() αποθηκεύοντας το νέο string στην (string..) μεταβλητή strFinalStr την οποία εκτυπώνουμε στην έξοδο (οθόνη).

 

>
//-stringstream demo -directx------------------------------------------------
#include <iostream>
#include <sstream>
#include <string>
#ifdef __BORLANDC__
#pragma hdrstop
#endif

//---------------------------------------------------------------------------

#ifdef __BORLANDC__
#pragma argsused
#endif
int main(int argc, char* argv[])
{
std::stringstream strBuffer;
std::string 	strA = "This is String A",
				strB = "This is String B";
int	nMyNumber = 2008;

// Pass strA, then a <Number> and strB on strBuffer (stringstream)
strBuffer << strA << " <" << nMyNumber << "> " << strB;
// Return strBuffer (stringstream) as STL string (.str() method)
std::string	strFinalStr = strBuffer.str();	
// Print it on stdout ...
std::cout << strFinalStr;

return 0;
}
//---------------------------------------------------------------------------

 

Ο κώδικας δοκιμάσθηκε σε CodeGear Turbo C++ Explorer.

Δημοσ.

Αυτος είναι ο κώδικας:

 

>
#include <string>

using namespace std;
class race
{
     private:
             string rcode;
             int maxmembers;
             int diflevel;
             double fee;
             string description;
              
     public: race(string rcode1, int maxmembers1, int diflevel1, double fee1, string description1)
     {
             maxmembers = maxmembers1;
             diflevel = diflevel1;
             fee = fee1;
             rcode = rcode1;
             description = description1;
     }
     
     public: void setRcode(string c)
     {
             rcode = c;
     }
     
     public: void setMaxmembers(int m)
     {
             maxmembers = m;
     }
     
     public: void setDifLevel(int d)
     {
             diflevel = d;
     }
     
     public: void setFee(double f)
     {
             fee = f;
     }
     
     public: string getRaceDetails()
     {
             return rcode + description;
     }
     
};        

 

στο string getRaceDetails() θέλω να έχω ένα presentation σε string για όλα τα πεδία. Απ΄ ότι φένεται στι C++ δεν είναι τόσο απλά τα πράγματα όσο στη java. :P

 

Ευχαριστώ directx για το κώδικα... θα το δοκιμάσω.

Δημοσ.

Αυτό, για παράδειγμα, σε καλύπτει; (περνώ άμεσα όλες τιμές σου στο stringstream και σου επιστρέφω ένα string σε μορφή όνομα: τιμή \n όνομα: τιμή ... ).

 

>
  public: string getRaceDetails()
  {
		  stringstream strBuffer;
		  strBuffer << "RCODE: " << rcode << endl;
		  strBuffer << "MAXMEMBERS:" << maxmembers << endl; 
		  strBuffer << "DIFLEVEL: " << diflevel << endl; 
		  strBuffer << "FEE:" << fee << endl;
		  strBuffer << "DESCRIPTION: " << description << endl;
		  
		  return strBuffer.str();
  }

 

Υ.Γ.

Ο αρχικός σου κώδικας περνά κανονικά από τον compiler μου, όσο βέβαια δεν δοκιμάζεις να περάσεις κάποιο integer.

Δημοσ.

Να σου κάνω μια ερώτηση. Η συνάρτηση str() τι κάνει; επιστρέφει την τιμή σε κανονικό string;

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...