Ich versuche, eine Liste von Zahlen zu trennen, wie: 34,45,12.3,100,34.6,50durch Kommata getrennte Schwimmer in C++
Ich kann es nur tun, wenn es keine Dezimalzahlen wie diese sind:
#include <vector>
#include <string>
#include <sstream>
#include <iostream>
int main()
{
std::string str = "34,45,12.3,100,34.6,50";
std::vector<int> vect;
std::stringstream ss(str);
int i;
while (ss >> i)
{
vect.push_back(i);
if (ss.peek() == ',')
ss.ignore();
}
for (i=0; i< vect.size(); i++)
std::cout << vect.at(i)<<std::endl;
}
Das Problem hier ist mit den Dezimalstellen. Die oben erzeugt:
34 45 12 3 100 34 6 50
während sie produzieren sollte:
34 45 12.3 100 34.6 50
grundsätzlich den obigen Code, wenn es einen Punkt sieht '.'
es wirkt, als wäre es ein Komma war.
Irgendwelche Ideen?
Sie haben einen Vektor von 'int' als Integer, daher kann er keine Fließkommazahl enthalten; Sie werden auf den ganzzahligen Teil gekürzt. Ändern Sie Ihren Vektor so, dass seine Elemente Fließkommazahlen sind. –
'i' sollte ein' float' sein. – Chnossos
Dies ist ein Duplikat von http://stackoverflow.com/questions/1120140/how-can-i-read-and-parse-csv-files-in-c (aber aus irgendeinem Grund denke ich nicht, es als zu markieren so, und es zu schließen, wäre richtig, hier). –