[]

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.

 
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.
  • 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
  • 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.
  • simendiferlerin efendisi  (10.06.11 06:46:34 ~ 06:54:37) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.