Inhalt von Testende
-
Hallo,
ich will daß ein Programm bei der Zahl 23 2 x 3 multipliziert u.s.w.
Dabei versuche ich die Zahl zu zerlegen mit lengthstring str (Testende);
cout << "The length of str is " << str.length() << " characters.\n";Er gibt mir immer folgende MELDUNG:
main.cpp:23: error: initializing argument 1 of 'std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]'
main.cpp:23: error: invalid conversion from 'int' to 'const char*'IRGENDWIE MUß ICH DIE VARIABLEN VERÄNDERN.
DANKE FÜR DEN TIPP
-
aber nicht den ganzen geheimen code zeigen

-
#include <iostream> #include <string> using namespace std; int quot; int Testbeginn = 1; int Testende = 100; int Zehler=0; int TS; int main () { cout<< "Testbeginn "; cin>>Testbeginn; cout<<"Testende"; cin>>Testende; /*ZahlAuseinanernehmer*/ string str (Testende); cout << "The length of str is " << str.length() << " characters.\n"; for(int i=1;i<=Testende/+1;i=i+1) { quot=Testende/i; if(0==Testende%i) { Zehler=Zehler+1; cout<<quot<<" "; TS=TS+quot; } } cout<<" als Teiler der Zahl. "<<Testende<<" hat also "<<Zehler<<" Teiler. Die Summe dieser Teiler ist: "<<TS<< " =TS"; }HIER IST ER, ER IST ABER LÄNGST NICHT FERTIG, WEIL ICH IN DAS GERÜST EINES ANDERENPROGRAMMES, WELCHE SEINE FUNKTION ERFÜLLTE, EINBAUE
-
du kannst in C++ nicht direkt int in string umwandeln , da musst du den umweg über stringstream gehen
-
Möglichkeit 1:
#include <sstream> #include <string> // ... std::stringstream temp; temp << Testende; // ich schließe mal aus der Fehlermeldung, dass Testende ein int ist std::string my_str(temp.str());dann haste deine Zahl 23 in my_str als "23" und kannst damit weiterarbeiten.
warum "Möglichkeit 1" ?
ganz einfach, du könntest auch sprintf aus <cstdio> verwenden
oder boost::lexical_caststd::string aus der Boost-Bibliothek.allerdings kannste die Zahl auch einfacher auseinander nehmen...
also nicht erst in einen String umwandeln...int count_digits(int number, int base) // zählt die Ziffern einer Zahl im System mit der Basis base (10 = dezimal, 2 = dual usw.) { int digits = 0; if (number == 0) return 1; while (number > 0) { ++digits; number /= base; } return digits; } // ... int digits = count_digits(Testende, 10); int* pDigits = new int[digits]; int temp = Testende, cur = 1; if (temp == 0) pDigits[0] = 0; while (temp > 0) { pDigits[digits - cur] = temp % 10; ++cur; temp /= 10; } // ...jetzt hast du in pDigits { 2, 3 } und kannst schön damit arbeiten^^
MfG DrakoXP
-
Erst mal dankeschön, muß das erst verarbeiten...
-
std::cout << (int)log10((double)Testende)+1;
-
Bekell schrieb:
Erst mal dankeschön, muß das erst verarbeiten...
Nochwas zum Verarbeiten: bei capslock legt die Service-Hotline auf.