stanlee Δημοσ. 17 Ιανουαρίου 2008 Δημοσ. 17 Ιανουαρίου 2008 Hello, στην περίπτωση που ενα string περιέχει μόνο ένα χαρακτήρα... πως γίνετε να το μετατρέψω σε ένα char ch ;; π.χ. έχω κάνει αυτό αλλά δεν μου επιστρέφεται το σωστό αποτέλεσμα (δηλ ο ASCII αριθμός του χαρακτήρα) char n[1]; temp = mystring.substr(pos+6,1); ss.clear(); ss.rdbuf()->str(temp); strcpy(n , temp.c_str()); cout<<">>>>>>>>>>>"<<n<<"<<<<<<<<<<<<"; cout<<int(n)<<endl; ευχαριστώ
bokarinho Δημοσ. 17 Ιανουαρίου 2008 Δημοσ. 17 Ιανουαρίου 2008 Hello, στην περίπτωση που ενα string περιέχει μόνο ένα χαρακτήρα... πως γίνετε να το μετατρέψω σε ένα char ch ;; π.χ. έχω κάνει αυτό αλλά δεν μου επιστρέφεται το σωστό αποτέλεσμα (δηλ ο ASCII αριθμός του χαρακτήρα) char n[1]; temp = mystring.substr(pos+6,1); ss.clear(); ss.rdbuf()->str(temp); strcpy(n , temp.c_str()); cout<<">>>>>>>>>>>"<<n<<"<<<<<<<<<<<<"; cout<<int(n)<<endl; ευχαριστώ Δεν καταλαβαίνω γιατί μπλέκεσαι τόσο πολύ, αν θέλεις ένα μόνο χαρακτήρα δήλωσε απλά char aChar; Κατόπιν να έχεις κατά νου να δεσμεύσεις τον σωστό χωρό για το buffer σου, δες τον κώδικα μου. > #include <iostream> #include <string> using namespace std; int main(int argc, char* argv[]) { char aChar; string _teststring("This is a test string."); char *TBuffer = new char[_teststring.size()+1]; if(TBuffer) { strcpy(TBuffer, _teststring.c_str()); if(strlen(TBuffer) == 1) { aChar = TBuffer[0]; cout << aChar << endl; } cout << TBuffer << endl; } delete[] TBuffer; cout << "Hit enter to end program...." << endl; cin.get(); return 0; }
stanlee Δημοσ. 17 Ιανουαρίου 2008 Μέλος Δημοσ. 17 Ιανουαρίου 2008 καλή η προτασή σου bokarinho και σ'ευχαριστώ για την βοήθειά σου αλλά... επειδή το temp = mystring.substr το χρησιμοποιώ και πιο πάνω στον κώδικά μου θεώρισα να μην το αλλάξω... μήπως έχεις να προτείνεις κάτι που θα μπορούσα να το εφαρμόσω με τον τρόπω που έγραψα.... δηλαδή να μετατρέψω το temp σε n για να μπορέσω να πάρω τον ΑSCII αριθμό του ή κάποια άλλη διαδικασία με την οποία θα μπορώ να πάρω τον ΑSCII αριθμό του χαρακτήρα που υπάρχει μέσα στο string... YΓ.το char n[1] το έκανα για να μπορέσει να τρέξει το πρόγραμμα, μπορούσα και με char *n.
bokarinho Δημοσ. 17 Ιανουαρίου 2008 Δημοσ. 17 Ιανουαρίου 2008 καλή η προτασή σου bokarinho και σ'ευχαριστώ για την βοήθειά σου αλλά... επειδή το temp = mystring.substr το χρησιμοποιώ και πιο πάνω στον κώδικά μου θεώρισα να μην το αλλάξω... μήπως έχεις να προτείνεις κάτι που θα μπορούσα να το εφαρμόσω με τον τρόπω που έγραψα.... δηλαδή να μετατρέψω το temp σε n για να μπορέσω να πάρω τον ΑSCII αριθμό του ή κάποια άλλη διαδικασία με την οποία θα μπορώ να πάρω τον ΑSCII αριθμό του χαρακτήρα που υπάρχει μέσα στο string... YΓ.το char n[1] το έκανα για να μπορέσει να τρέξει το πρόγραμμα, μπορούσα και με char *n. Δεν σου είπα να αλλάξεις κάτι, είναι απλό, όταν έχεις ένα string που είναι ένα Container και μάλιστα sequential για την STL, για να πάρεις το C-δες string εφαρμόζεις την c_str() όπως και έχεις κάνει, και μετά ένα strcpy στο Buffer για το οποίο έχεις δεσμέυσει τον κατάλληλο χώρο, δες το παράδειγμα μου, και όλα οκ, αν θέλεις μόνο ένα χαρακτήρα τότε πάρε τον πρώτο χαρακτήρα από το Buffer μιας και δεν υπάρχει άλλος(Buffer[0], *Buffer). Δες το και μόνος σου.
alkisg Δημοσ. 17 Ιανουαρίου 2008 Δημοσ. 17 Ιανουαρίου 2008 Χωρίς να διαβάσω λεπτομέρειες, αφού έχεις n[1] πίνακα χαρακτήρων, το n[0] είναι ο πρώτος χαρακτήρας. Άρα cout << n[0] << int(n[0]) Το n σκέτο είναι δείκτης (πίνακας), δεν είναι χαρακτήρας. ...αλλά μπορεί να μην διάβασα και καλά! edit: οκ, πρόλαβε ο Bokarinho.
stanlee Δημοσ. 17 Ιανουαρίου 2008 Μέλος Δημοσ. 17 Ιανουαρίου 2008 Δεν σου είπα να αλλάξεις κάτι, είναι απλό, όταν έχεις ένα string που είναι ένα Container και μάλιστα sequential για την STL, για να πάρεις το C-δες string εφαρμόζεις την c_str() όπως και έχεις κάνει, και μετά ένα strcpy στο Buffer για το οποίο έχεις δεσμέυσει τον κατάλληλο χώρο, δες το παράδειγμα μου, και όλα οκ, αν θέλεις μόνο ένα χαρακτήρα τότε πάρε τον πρώτο χαρακτήρα από το Buffer μιας και δεν υπάρχει άλλος(Buffer[0], *Buffer). Δες το και μόνος σου. OK το'πιασα thanx και παλι
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.