Fråga : Hur skulle I tillverkar till CString, i stället för att använda stringstream ss?

Jag har något att kodifiera nedanfört.  Vad den gör, är detta:  Det finns deltagare A-G som är förlovade i en strid till barkassen per så avlägsen anmärka, som de kan (mätt i fot).  De ges multipelförsök, och alla för programet de nedanföra fynden anföra som exempel, när det finns TIES distanserar in kastat, mellan 2 eller mer olik deltagare och tillverkar det till avskärmanågot liknande så: fot för

44: C E
33 fot: B D
22 fot: A C, D, det F

The programet fungerar utmärkt.  Nu vad jag skulle, något liknande som ska göras är i stället för att tillverka till avskärma using stringstream som jag önskar som tillverkas för att innehållas i en CString som kallas csOutput.  Resonera för denna är att jag ska tar CStringen och använder den med något annat redan skriftligt kodifierar att jag har.  Så hur jag tillverkar till CString csOutput?
> för
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
" codeBody " " för >#include för class= " för #include #include #include #include #include using namespace std; struct StudentAttempt { int distanserar; stränga studentName; }; boolcmpAttempts (lämnade StudentAttempt, högra StudentAttempt) { om (left.distance < right.distance) { återgångt true; } annars, om (left.distance-== right.distance) { om (left.studentName < right.studentName) { återgångt true; } annars återgångt falskt; } annars återgångt falskt; } isDistEqual bool (lämnade StudentAttempt, högra StudentAttempt) { gå tillbaka (left.distance-== right.distance && left.studentName! = right.studentName); } printAllEqual size_t (constvector& v, constStudentAttempt& sa, stringstream& ss) { vector:: const_iterator i = v.begin (); size_t sz = 0; stunder (I! = v.end ()) { om (isDistEqual (*ien, sa)) { ss << i->studentName; ++sz; } ++i; } återgång sz; } huvudsaklig int () { StudentAttempt throwDist [] = { {50, ”A”}, {22, ”A”}, {16, ”B”}, {44, ”C”}, {33, ”D”}, {34, ”E”}, {22, ”F”}, {21, ”G”}, {49, ”A”}, {5, ”B”}, {2, ”C”}, {22, ”A”}, {33, ”B”}, {22, ”C”}, {22, ”D”}, {44, ”E”}, }; behandlad set; int len = sizeof) (för throwDist/sizeof (throwDist [0]); vectordist (throwDisten, throwDist + len); vector:: iterator det = dist.begin (); sortera (dist.begin (), dist.end (), cmpAttempts); för (; det! = dist.end (); it++) { stringstream ss; pair:: iterator bool> p = handled.insert (it->distance); om (! p.second) fortsätter; // som redan ar behandlad om (0 < printAllEqual (disten, *it, ss)) cout << setw (2) << (*it) .distance << ”fot: ” << (*it) .studentName << ss.str () << endl; } }
" klar "

Svar : Hur skulle I tillverkar till CString, i stället för att använda stringstream ss?

Välla fram, även om jag skulle rekommenderar fortfarande STL över MFC, denna kan också göras, e.g.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
#include  
#include  
#include  
#include  
#include  
#include  

using namespace std;

struct StudentAttempt
{
   int distanserar;
   stränga studentName;
};

boolcmpAttempts (lämnade StudentAttempt, högra StudentAttempt) {
   om (left.distance < right="">& v, str för constStudentAttempt& sa, CString&) {

  vektor:: const_iterator i = v.begin ();
  size_t sz = 0;

  stunder (I! = v.end ()) {

    om (isDistEqual (*ien, sa)) {
    
      str +=-i->studentName;
      ++sz;
    }

    ++i;
  }

  återgång sz;
}

huvudsaklig int () {

   StudentAttempt throwDist [] = {
      {50, ”A”},      {22, ”A”},      {16, ”B”},      {44, ”C”},
      {33, ”D”},      {34, ”E”},      {22, ”F”},      {21, ”G”},
      {49, ”A”},      {5, ”B”},      {2, ”C”},      {22, ”A”},
      {33, ”B”},      {22, ”C”},      {22, ”D”},      {44, ”E”},
   };

   uppsättningen behandlade;

   int len = sizeof) (för throwDist/sizeof (throwDist [0]);
   vektor dist (throwDisten, throwDist + len);
   vektor:: iterator det = dist.begin ();

   sortera (dist.begin (), dist.end (), cmpAttempts);

   för (; det! = dist.end (); it++) {

      CString str;

      para:: iterator bool> p = handled.insert (it->distance);

      om (! p.second) fortsätter; // behandlade redan

      om (0  < printAllEqual="">
           
Andra lösningar  
 
programming4us programming4us