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

μετατροπή string σε char c++


stanlee

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

Δημοσ.

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;

 

 

ευχαριστώ

Δημοσ.
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;
}

Δημοσ.

καλή η προτασή σου bokarinho και σ'ευχαριστώ για την βοήθειά σου αλλά... επειδή το temp = mystring.substr το χρησιμοποιώ και πιο πάνω στον κώδικά μου θεώρισα να μην το αλλάξω... μήπως έχεις να προτείνεις κάτι που θα μπορούσα να το εφαρμόσω με τον τρόπω που έγραψα....

 

δηλαδή να μετατρέψω το temp σε n για να μπορέσω να πάρω τον ΑSCII αριθμό του ή κάποια άλλη διαδικασία με την οποία θα μπορώ να πάρω τον ΑSCII αριθμό του χαρακτήρα που υπάρχει μέσα στο string...

 

YΓ.το char n[1] το έκανα για να μπορέσει να τρέξει το πρόγραμμα, μπορούσα και με char *n.

Δημοσ.
καλή η προτασή σου 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). Δες το και μόνος σου.

Δημοσ.

Χωρίς να διαβάσω λεπτομέρειες, αφού έχεις n[1] πίνακα χαρακτήρων, το n[0] είναι ο πρώτος χαρακτήρας.

 

Άρα cout << n[0] << int(n[0])

 

Το n σκέτο είναι δείκτης (πίνακας), δεν είναι χαρακτήρας.

 

...αλλά μπορεί να μην διάβασα και καλά! :-)

 

edit: οκ, πρόλαβε ο Bokarinho.

Δημοσ.
Δεν σου είπα να αλλάξεις κάτι, είναι απλό, όταν έχεις ένα string που είναι ένα Container και μάλιστα sequential για την STL, για να πάρεις το C-δες string εφαρμόζεις την c_str() όπως και έχεις κάνει, και μετά ένα strcpy στο Buffer για το οποίο έχεις δεσμέυσει τον κατάλληλο χώρο, δες το παράδειγμα μου, και όλα οκ, αν θέλεις μόνο ένα χαρακτήρα τότε πάρε τον πρώτο χαρακτήρα από το Buffer μιας και δεν υπάρχει άλλος(Buffer[0], *Buffer). Δες το και μόνος σου.

 

 

OK το'πιασα

 

thanx και παλι

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

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

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