C++ dosyasında csv dosyası ayrıştırıcısı yazıyorum. Dosya virgülle ayrılmış ve hem basit hem de sayısal değerlere sahip olabilir. Nümerikler için anında ikiye dönüştürebilmek istiyorum. Bu yüzden char * start ve int uzunluğum var ama char dizisinin bir kısmı boş değil. Öncelikle dizgeye dönüştürmeden char * 'ı ikiye dönüştürmenin hızlı bir yolu var mı?C++ char dizisi sıfır değil çift verilen başlangıç ve uzunluk için sonlandırıldı
cevap
@ThomasMatthews için güncelleme comment: Bunun için bir C++ akışı kullanabilir ve özel bir buffer sınıfı yaparsanız, bir dizgeye dönüştürmeyi engelleyebilirsiniz (aslında olduğu gibi, daha önce bir cevap yazmıştım) :
görünüşe göre, burada üzerine Geliştirilmiş: C tarzı çözüm için
Creating an input stream from constant memory
, lea de st bir proje standart strtod()
bir analog olarak uygulanır, ve böyle bir fonksiyon strntod()
seçti:
https://github.com/client9/season/blob/3a900563595a114fe9f33cf55caa326bd87d94f8/strntod.c
Bu user4581301 @ ile bahsedilen bu, söz konusu atıf strtol()
olmayan standart strntol()
varyantı paralel:
Is there a strtol equivalent that does not require a null-terminated string?
ve hack için , nedense bunu mutabl olmak tanıyor Değiştirmek için güvenli olan bir bellek ... bu noktada geçici olarak \0
'u kandırabilirsiniz. strtod()
'u çalıştırın ve eski karakteri geri koyun. : -/
- 1. char in char ve pointer dizisi C++
- 2. C# için Google Drive API'sı - Sıfır uzunluk dosya güncelleştirmeleri çalışmıyor
- 3. C, atlama başlangıç statik dizisi
- 4. AdMob Yanıt iletisi sıfır veya sıfır uzunluk
- 5. const char * dizgesini uzunluk ve NSString'e dönüştürme
- 6. belirlemek için en iyi yol çift sıfır değil
- 7. Strcmp kullanılmadan Char dizisi karşılaştırma C
- 8. Bir foreach döngüsünde çift sıfır dizin C#
- 9. C#: [], çift [] [] ve çift
- 10. MPI_Send ve MPI_Recv char dizisi denenmeye hazırlanıyor
- 11. C char içine char * dönüştürmek
- 12. Filtre dizisi - tek çift
- 13. Laravel Değil Sıfır Doğrulama
- 14. Neden char [] ve char * typedefs olarak farklı, ancak bazen ... değil?
- 15. MATLAB Char dizisi ile başlayan dize
- 16. C Dinamik olarak çift baskı, hassaslık kaybı yok ve takip eden sıfır yok
- 17. Bir char dizisini C
- 18. Döngü VE C# enum Verilen
- 19. OpenSSL RSA Şifreleme için Değişken Uzunluk Sonucu [C programlama]
- 20. Char dizisi doğru bir şekilde okuma okumıyor
- 21. Hangi program herhangi bir dosya verilen bir C dizisi oluşturur?
- 22. çift çıkış sırası ve RijndaelManaged kriptografi C#
- 23. Neden C kodu Verilen C
- 24. Uzunluk ve filetype
- 25. vektör char dizisi veya dizgisini nasıl kırpılır?
- 26. arasındaki fark, char dizisi ile karakter dizisi ile char dizgesini karşılaştırır.
- 27. Python Sonlandırıldı Thread Yeniden Başlatılamadı
- 28. hardcode bayt dizisi C
- 29. Git dilimleri - kapasite/uzunluk?
- 30. Mareşal C++ yapı dizisi
Bazı araştırmalar gerçekleştirin. –
Standart kütüphanede bildiğim hiçbir şey senin vakanı kapsıyor. std :: strtod 'muhtemelen en yakın olanıdır, çünkü nerede bittiğini test edebilirsin, ama yine de bazı ciddi tanımlanmamış davranışlarla sonuçlanırdı çünkü er ya da geç tamponun bir sayının sonunu arar. – user4581301
@ user4581301: Belleğimde "istringstream" adlı bir kütüphane nesnesi var, ancak ne yaptığını hatırlayamıyorum. Belki de yukarı bakar mısın? –