Dr.Fuzzy Δημοσ. 13 Απριλίου 2020 Δημοσ. 13 Απριλίου 2020 Στο παρακάτω κώδικα για ενα PCD parser μου επιστρέφει σκουπίδια. Αν μπορεί καποιος να βρει τι πάει λάθος. #include <cstring> #include <fstream> #include <iostream> #include <sstream> #include <string> void parsePCD(const std::string &filename); int main(int argc, char **argv) { if (strcmp(argv[1], "") == 0) std::cerr << "Μissing PCD file argument\n"; else { std::string filename(argv[1]); parsePCD(filename); } return 0; } void parsePCD(const std::string &filename) { std::string buffer; std::ifstream source; source.open(filename); const std::string header_end = "DATA ascii"; float x_tmp, y_tmp, z_tmp; num = 0; std::cout << "Parsing PCD started.\n"; do { // Skip PCD header std::getline(source, buffer); if (buffer.find("POINTS") != std::string::npos) { num = std::stoi(buffer.substr(buffer.find_last_of("POINTS") + 1)); std::cout << "PCD number of points: " << num << std::endl; } else if (buffer.find(header_end) != std::string::npos) std::cout << "PCD header successfully skipped!\n"; } while (buffer.find(header_end) == std::string::npos); while (std::getline(source, buffer)) { // Parse PCD x, y, z fields std::stringstream slicer; slicer >> x_tmp >> y_tmp >> z_tmp; std::cout << x_tmp << " " << y_tmp << " " << z_tmp << "\n"; } std::cout << "Parsing PCD ended.\n"; } Το PCD file έχει την παρακάτω μορφή: # .PCD v.7 - Point Cloud Data file format VERSION .7 FIELDS x y z SIZE 4 4 4 TYPE F F F COUNT 1 1 1 WIDTH 5 HEIGHT 1 VIEWPOINT 0 0 0 1 0 0 0 POINTS 5 DATA ascii -0.063141 0.152896 -0.009314 0.010250 0.076696 -0.032355 -0.061584 0.155311 -0.022582 -0.052901 0.114056 -0.016235 -0.067758 0.169960 -0.032616
Moderators Kercyn Δημοσ. 13 Απριλίου 2020 Moderators Δημοσ. 13 Απριλίου 2020 (επεξεργασμένο) Άκυρο γιατί όλο βλακείες γράφω. Έλα σ' έφτιαξα. std::stringstream slicer(buffer); Προσπαθούσες να πάρεις τιμές από άδειο stringstream. Επίσης δεν έχεις δηλώσει τύπο στο num. Επεξ/σία 13 Απριλίου 2020 από Kercyn
Dr.Fuzzy Δημοσ. 13 Απριλίου 2020 Μέλος Δημοσ. 13 Απριλίου 2020 3 hours ago, Kercyn said: Άκυρο γιατί όλο βλακείες γράφω. Έλα σ' έφτιαξα. std::stringstream slicer(buffer); Προσπαθούσες να πάρεις τιμές από άδειο stringstream. Επίσης δεν έχεις δηλώσει τύπο στο num. Είσαι άρχοντας! (το num το έχω δηλώσει στον full κώδικα, απλά ξέχασα να το κάνω paste στο stripped down παράδειγμα εδώ)
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα