[]
C++ - CSV Okumak
Yaptığım yöntemler biraz kulağı tersten tutmak gibi olacak. Pratik çözümler vardır belki.
CSV dosyasında, atıyorum, 8., 12. ve 15. sütunlardaki verileri almak istiyorum, döngü içinde. Sütunlardan biri tarih, biri integer, biri de text olsun. Bunun getline() ile string'e alıp, yine string'in içinden getline() ile 8 kere ";" ayıklamaktan daha pratik bir yolu var mı? Bir de tarih gibi değişkenleri nasıl en kolay alırım? Dosyada bir dolu sütun var.
İmza: senelerdir C++ yazmayan, zayıf hafızalı adam.
CSV dosyasında, atıyorum, 8., 12. ve 15. sütunlardaki verileri almak istiyorum, döngü içinde. Sütunlardan biri tarih, biri integer, biri de text olsun. Bunun getline() ile string'e alıp, yine string'in içinden getline() ile 8 kere ";" ayıklamaktan daha pratik bir yolu var mı? Bir de tarih gibi değişkenleri nasıl en kolay alırım? Dosyada bir dolu sütun var.
İmza: senelerdir C++ yazmayan, zayıf hafızalı adam.
get_nth_column diye bir fonksiyon yazip, bu fonksiyona delimitir ve kacinci delimitir'dan sonraki sutunun getirilecegi yazilabilir. sonra da 8. sutun icin; get_nth_column(';', 8).
ben de uzun suredir c++'tan uzagim da, instr turevi biseyler vardir mutlaka.
ben de uzun suredir c++'tan uzagim da, instr turevi biseyler vardir mutlaka.
- nawres (09.06.11 11:34:47)
strtok vardı bu iş için ama...
- rainel (09.06.11 12:18:11)
tarih gibi degiskenleri getline la alinan satirdan almanin en kolay yolu regular expression kullanmak olur.
haliyle c++ regex desteklemiyor. bunun icin boost::regex library'sini kullanabilirsiniz.
www.boost.org
haliyle c++ regex desteklemiyor. bunun icin boost::regex library'sini kullanabilirsiniz.
www.boost.org
- magara adami (09.06.11 12:52:11)
getline 3. bir argüman alıp delimiter olarak kullanabiliyor. delimiter olarak ';' verebilirsiniz.
ayrıca, elinizdeki input stream'i (veya input stream'e çevrilmiş bir satırı) std::copy ile bir std::vector'a veya array'e kopyalayabilirsiniz tek adımda -- tabii öncesinde std::copy'ye argüman olarak geçirmek için istream_iterator<string> yaratmanız gerekiyor bu stream üzerinde iterate edebilmek için.
ayrıca, elinizdeki input stream'i (veya input stream'e çevrilmiş bir satırı) std::copy ile bir std::vector'a veya array'e kopyalayabilirsiniz tek adımda -- tabii öncesinde std::copy'ye argüman olarak geçirmek için istream_iterator<string> yaratmanız gerekiyor bu stream üzerinde iterate edebilmek için.
- simendiferlerin efendisi (10.06.11 06:46:34 ~ 06:54:37)
1