Gå til innhold

hente tall fra en string til et int-array


Anbefalte innlegg

la oss si at jeg bruker cin for å skaffe input fra brukeren. jeg har et int-array som jeg vil at skal fylles med forskjellige verdier fra stringen brukeren skrev inn.

int array[5];

string str;
cin >> str;

 

la oss nå si at brukeren taster inn:

12345
Nå vil jeg hente disse fem tallene og putte inn i hver sin plass i arrayet.

 

 

Dessuten bør jeg ha noe errorsjekking, noe som sjekker at brukeren faktisk har skrevet et tall, før programmet putter det inn i arrayet.

 

Huff, slikt er så vanskelig i c++, i php hadde dette vært gjort på et blunk :p

 

 

EDIT: fant ut at det gikk ann å gjøre sånn: array[0] = str[0]; :p

men, array[0] blir vel asciiverdien(eller hva det heter) når man konverterer slik? har ikke kompilator her, så får ikke testa..

 

og har c++ noen standard-funksjoner for å sjekke om det er et tall?

Endret av mortizz
Lenke til kommentar
Videoannonse
Annonse
#include <string>
#include <iostream>

using namespace std;

class Error{
public:
char c;
Error(char bad_char):c(bad_char){}
};

int main(){

string s;

cout << "Enter some numbers: " << flush;
cin >> s;
int *i=new int[s.length()];
try {
 for (int j=0;j<s.length();j++) {
 	if ((s[j]>='0') && (s[j]<='9')) i[j]=s[j]-'0';
 	else {
   Error e(s[j]);
   throw e;
 	}
 }
 
cout << "All ok!" << endl;
for (int j=0;j<s.length();j++) {
 cout << i[j] << endl;
}

}
catch (Error e){
 clog << "Error! Offending char: '" << e.c << "'" << endl;
 exit(EXIT_FAILURE);
}


return EXIT_SUCCESS;
}

Lenke til kommentar
For å sjekke om noe er tall, så kan du vel bruke isdigit()

Men da tror jeg du må gjøre om stringen til char.

 

Jeg prøvde å bruke den, men fikk et par errors. Funker sikkert.

Sikkert noe jeg har gjort feil.

5290049[/snapback]

 

stringklassen har jo en funksjon som heter c_str() som returnerer stringen som en const char*, tror jeg..

 

 

Men, brukte metoden til JBlack, jeg =) Takker

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...