Ich habe diese Art von Input:
x4.9
x.25
C400
Wie lässt sich das erste Zeichen am besten weglassen und in Float umwandeln?
Ich habe diese Art von Input:
x4.9
x.25
C400
Wie lässt sich das erste Zeichen am besten weglassen und in Float umwandeln?
#include <iostream>
...
char c;
float f;
std::cin >> c >> f;
std::cin >> c
liest ein Zeichen von der Standardeingabe und speichert das Zeichen in c
und std::cin >> f
liest und speichert einen Float von der Standardeingabe. std::cin >> c >> f
ist gleichbedeutend mit std::cin >> c; std::cin >> f;
Sie können eine Schleife wie oben bilden, um eine Reihe von Eingängen zu lesen. cin
überspringt standardmäßig Leerzeichen, so dass die Zeilenumbrüche kein Problem darstellen.
Ihre Eingabe ist zeilenorientiert, so dass Sie vielleicht zuerst Zeilen lesen und diese dann verarbeiten möchten:
// Beware, brain-compiled code ahead!
void process_line(std::istream& is);
void read_input(std::istream& is)
{
while(is.good()) {
std::string line;
//is >> std::ws; // might want to allow leading whitespace
std::getline(is,line);
if(is && !line.empty()) {
std::istringstream iss(line);
process_line(iss);
if(!iss.eof()) // reading number failed
break;
}
}
if(!is.eof()) // reading failed before eof
throw("input error, read_input() blew it!");
}
void process_line(std::istream& is)
{
char ch;
double d;
is >> ch >> d/* >> std::ws*/; // trailing whitespace usually often is acceptable
if(!is.eof()) // should be at the end of line
return;
process_number(ch,d); // I don't know whether ch is important
}
Die Fehlerbehandlung könnte verbessert werden, aber das sollte ein Anfang sein.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.