[c++] String in String suchen, zerlegen, in Feld speichern

String an position 1: string.c_str()[1]. Soweit ich deinem Code aber jetzt entnehmen kann müsste eh alles stimmen, bis darauf, dass du im Falle eines Leerzeichens noch zahlInBuchstaben auf "" zurücksetzten musst.
Daher die Frage: Wo willst du nochmal auf Leerzeichen prüfen?
 
Innerhalb des stringes, den ich aus einer datei zuvor schon per getline in mein programm importiert habe.

Okay; dann probier ichs mit zeile.c_str()[1].
 
Funktioniert; hier noch der Teil des Programmes:

C++:
for (k=1;k!=85;k++)
				{
					buffer=zeile.c_str()[k];

				  	if (buffer==' ')
					{
				  		cout<<zahlInBuchstaben<<endl;
						zahlInDouble = atof(zahlInBuchstaben.data());
						zahlInBuchstaben = "";

						NasaKoeff[speziesZuweisung-1][Koeff]=zahlInDouble;

						Koeff++;
						if (Koeff==4)
						{
							Koeff=0;
						}
					}
					else
					{
						zahlInBuchstaben += buffer;
					}
}
 
Hallo,

Naja, wenn du den String eh schon als ganzes im Speicher hast kannst dus überhaupt anders angehen:

C++:
string s("14 13.5 8.9 400.12");

	char* cstring = (char*)s.c_str();
	int l = s.length();
	int numberOfNumbers = 0;

	//Alle Leerzeichen durch '\0' = StringEnde ersetzen
	for (int i = 0; i < l; i++)
	{
		if (cstring[i] == ' ')
		{
			cstring[i] = '\0';
			numberOfNumbers++;
		}
	}

	//Pointer auf den ersten Zahlenstring setzen
	char* startp = cstring;

	//Alle Zahlenstrings durchlaufen
	for (int i = 0; i <= numberOfNumbers; i++)
	{
		//Umwandlung nach double
		double d = atof(startp);
		std::cout << d << std::endl;

		//Auf den Beginn des nächsten Zahlenstrings setzen
		startp += strlen(startp) + 1;
	}

Da fällt nämlich der Aufwand für das kopieren der Zahlen in einen neuen String weg.
 
Zuletzt bearbeitet von einem Moderator:
Zurück