Έχω απλώς μια γρήγορη ερώτηση. Έχω ψάξει αρκετά στο διαδίκτυο και έχω βρει μερικές λύσεις, αλλά καμία από αυτές δεν έχει δουλέψει ακόμα. Ψάχνω να μετατρέψω μια συμβολοσειρά σε int και δεν εννοώ τους κωδικούς ASCII.
Για μια γρήγορη παρουσίαση, μας περνάει μια εξίσωση ως συμβολοσειρά. Πρέπει να την αναλύσουμε, να τη μορφοποιήσουμε σωστά και να λύσουμε τις γραμμικές εξισώσεις. Τώρα, λέγοντας αυτό, δεν είμαι σε θέση να μετατρέψω ένα αλφαριθμητικό σε int.
Ξέρω ότι το αλφαριθμητικό θα έχει είτε τη μορφή (-5) είτε (25) κ.λπ. οπότε είναι σίγουρα int. Αλλά πώς μπορούμε να το εξάγουμε αυτό από ένα αλφαριθμητικό;
Ένας τρόπος που σκεφτόμουν είναι να τρέξουμε έναν βρόχο for/while στο string, να ελέγξουμε για ένα ψηφίο, να εξάγουμε όλα τα ψηφία μετά από αυτό και στη συνέχεια να δούμε αν υπήρχε ένα αρχικό '-', αν υπάρχει, να πολλαπλασιάσουμε το int με το -1.
Φαίνεται όμως λίγο πολύπλοκο για ένα τόσο μικρό πρόβλημα. Καμία ιδέα;
std::istringstream ss(thestring);
ss >> thevalue;
Για να είστε απόλυτα σωστοί, θα πρέπει να ελέγξετε τις σημαίες σφάλματος.
χρησιμοποιήστε τη συνάρτηση atoi για να μετατρέψετε τη συμβολοσειρά σε ακέραιο αριθμό:
string a = "25";
int b = atoi(a.c_str());
Η atoi
είναι μια ενσωματωμένη συνάρτηση που μετατρέπει μια συμβολοσειρά σε ακέραιο αριθμό, υποθέτοντας ότι η συμβολοσειρά αρχίζει με μια ακέραια αναπαράσταση.