From 77d6773ee6f4b6568f0ffbd1b10ce71e7ce16a40 Mon Sep 17 00:00:00 2001 From: John Suykerbuyk Date: Tue, 24 Feb 2026 11:03:01 -0700 Subject: [PATCH] Replace deprecated std::istrstream with std::istringstream MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit std::istrstream (from ) has been deprecated since C++98 and produces -Wdeprecated-declarations warnings on GCC 14+ and Clang 18+. Replace all 37 usages across 23 files with std::istringstream (from ). The zero-copy property of istrstream is not needed at any of these call sites — all source buffers outlive the stream and the data sizes are small (symbol tables, lexicons, WAV chunks, FST rules). For files that already include (symbol-table.cc, lexicon.cc, audio-tagging-label-file.cc, piper-phonemize-lexicon.cc, offline-tts-character-frontend.cc, matcha-tts-lexicon.cc, homophone-replacer.cc, melo-tts-lexicon.cc, character-lexicon.cc, kokoro-multi-lang-lexicon.cc), the redundant include is simply removed. --- sherpa-onnx/c-api/c-api.cc | 8 ++++++-- sherpa-onnx/csrc/audio-tagging-label-file.cc | 4 +--- sherpa-onnx/csrc/character-lexicon.cc | 5 ++--- sherpa-onnx/csrc/homophone-replacer.cc | 5 ++--- sherpa-onnx/csrc/keyword-spotter-transducer-impl.h | 4 ++-- sherpa-onnx/csrc/kokoro-multi-lang-lexicon.cc | 5 ++--- sherpa-onnx/csrc/lexicon.cc | 5 ++--- sherpa-onnx/csrc/matcha-tts-lexicon.cc | 5 ++--- sherpa-onnx/csrc/melo-tts-lexicon.cc | 5 ++--- sherpa-onnx/csrc/offline-recognizer-impl.cc | 6 +++--- sherpa-onnx/csrc/offline-tts-character-frontend.cc | 3 +-- sherpa-onnx/csrc/offline-tts-kitten-impl.h | 6 +++--- sherpa-onnx/csrc/offline-tts-kokoro-impl.h | 6 +++--- sherpa-onnx/csrc/offline-tts-matcha-impl.h | 6 +++--- sherpa-onnx/csrc/offline-tts-pocket-impl.h | 5 +++-- sherpa-onnx/csrc/offline-tts-vits-impl.h | 6 +++--- sherpa-onnx/csrc/offline-tts-zipvoice-impl.h | 2 +- sherpa-onnx/csrc/online-recognizer-impl.cc | 6 +++--- sherpa-onnx/csrc/piper-phonemize-lexicon.cc | 9 ++++----- .../csrc/rknn/keyword-spotter-transducer-rknn-impl.h | 4 ++-- sherpa-onnx/csrc/symbol-table.cc | 3 +-- sherpa-onnx/jni/common.h | 2 +- sherpa-onnx/jni/wave-reader.cc | 2 +- 23 files changed, 53 insertions(+), 59 deletions(-) diff --git a/sherpa-onnx/c-api/c-api.cc b/sherpa-onnx/c-api/c-api.cc index b7ca93572b..f67676caac 100644 --- a/sherpa-onnx/c-api/c-api.cc +++ b/sherpa-onnx/c-api/c-api.cc @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include @@ -1821,10 +1821,14 @@ const SherpaOnnxWave *SherpaOnnxReadWave(const char *filename) { const SherpaOnnxWave *SherpaOnnxReadWaveFromBinaryData(const char *data, int32_t n) { + if (!data || n <= 0) { + return nullptr; + } + int32_t sample_rate = -1; bool is_ok = false; - std::istrstream is(data, n); + std::istringstream is(std::string(data, n)); std::vector samples = sherpa_onnx::ReadWave(is, &sample_rate, &is_ok); if (!is_ok) { diff --git a/sherpa-onnx/csrc/audio-tagging-label-file.cc b/sherpa-onnx/csrc/audio-tagging-label-file.cc index 705a170d2b..7a58f9a8f3 100644 --- a/sherpa-onnx/csrc/audio-tagging-label-file.cc +++ b/sherpa-onnx/csrc/audio-tagging-label-file.cc @@ -9,8 +9,6 @@ #include #if __ANDROID_API__ >= 9 -#include - #include "android/asset_manager.h" #include "android/asset_manager_jni.h" #endif @@ -30,7 +28,7 @@ AudioTaggingLabels::AudioTaggingLabels(const std::string &filename) { AudioTaggingLabels::AudioTaggingLabels(AAssetManager *mgr, const std::string &filename) { auto buf = ReadFile(mgr, filename); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); Init(is); } #endif diff --git a/sherpa-onnx/csrc/character-lexicon.cc b/sherpa-onnx/csrc/character-lexicon.cc index 483828bb33..b7340822b7 100644 --- a/sherpa-onnx/csrc/character-lexicon.cc +++ b/sherpa-onnx/csrc/character-lexicon.cc @@ -10,7 +10,6 @@ #include // NOLINT #include #include -#include #include #include #include @@ -65,14 +64,14 @@ class CharacterLexicon::Impl { { auto buf = ReadFile(mgr, tokens); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); InitTokens(is); } { auto buf = ReadFile(mgr, lexicon); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); InitLexicon(is); } } diff --git a/sherpa-onnx/csrc/homophone-replacer.cc b/sherpa-onnx/csrc/homophone-replacer.cc index db3325eb66..43e9227ae6 100644 --- a/sherpa-onnx/csrc/homophone-replacer.cc +++ b/sherpa-onnx/csrc/homophone-replacer.cc @@ -9,7 +9,6 @@ #include #include #include -#include #include #include #include @@ -112,7 +111,7 @@ class HomophoneReplacer::Impl { { auto buf = ReadFile(mgr, config.lexicon); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); InitLexicon(is); } @@ -125,7 +124,7 @@ class HomophoneReplacer::Impl { SHERPA_ONNX_LOGE("hr rule fst: %s", f.c_str()); } auto buf = ReadFile(mgr, f); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); replacer_list_.push_back( std::make_unique(is)); } diff --git a/sherpa-onnx/csrc/keyword-spotter-transducer-impl.h b/sherpa-onnx/csrc/keyword-spotter-transducer-impl.h index 02b037b21f..8982ff2b9d 100644 --- a/sherpa-onnx/csrc/keyword-spotter-transducer-impl.h +++ b/sherpa-onnx/csrc/keyword-spotter-transducer-impl.h @@ -9,7 +9,7 @@ #include #include // NOLINT #include -#include +#include #include #include @@ -321,7 +321,7 @@ class KeywordSpotterTransducerImpl : public KeywordSpotterImpl { auto buf = ReadFile(mgr, config_.keywords_file); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); if (!is) { #if __OHOS__ diff --git a/sherpa-onnx/csrc/kokoro-multi-lang-lexicon.cc b/sherpa-onnx/csrc/kokoro-multi-lang-lexicon.cc index 8bf7bcacec..a60c343a2e 100644 --- a/sherpa-onnx/csrc/kokoro-multi-lang-lexicon.cc +++ b/sherpa-onnx/csrc/kokoro-multi-lang-lexicon.cc @@ -9,7 +9,6 @@ #include #include #include -#include #include #include #include @@ -438,7 +437,7 @@ class KokoroMultiLangLexicon::Impl { void InitTokens(Manager *mgr, const std::string &tokens) { auto buf = ReadFile(mgr, tokens); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); InitTokens(is); } @@ -491,7 +490,7 @@ class KokoroMultiLangLexicon::Impl { for (const auto &f : files) { auto buf = ReadFile(mgr, f); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); InitLexicon(is); } } diff --git a/sherpa-onnx/csrc/lexicon.cc b/sherpa-onnx/csrc/lexicon.cc index 620a2a3cd6..526846dc3e 100644 --- a/sherpa-onnx/csrc/lexicon.cc +++ b/sherpa-onnx/csrc/lexicon.cc @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include @@ -131,13 +130,13 @@ Lexicon::Lexicon(Manager *mgr, const std::string &lexicon, { auto buf = ReadFile(mgr, tokens); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); InitTokens(is); } { auto buf = ReadFile(mgr, lexicon); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); InitLexicon(is); } diff --git a/sherpa-onnx/csrc/matcha-tts-lexicon.cc b/sherpa-onnx/csrc/matcha-tts-lexicon.cc index fc372afd12..92d7e3335d 100644 --- a/sherpa-onnx/csrc/matcha-tts-lexicon.cc +++ b/sherpa-onnx/csrc/matcha-tts-lexicon.cc @@ -12,7 +12,6 @@ #include // NOLINT #include #include -#include #include #include #include @@ -174,7 +173,7 @@ class MatchaTtsLexicon::Impl { { auto buf = ReadFile(mgr, tokens); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); InitTokens(is); } @@ -184,7 +183,7 @@ class MatchaTtsLexicon::Impl { for (const auto &f : files) { auto buf = ReadFile(mgr, f); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); InitLexicon(is); } diff --git a/sherpa-onnx/csrc/melo-tts-lexicon.cc b/sherpa-onnx/csrc/melo-tts-lexicon.cc index 1210bb05a0..af2fb83c32 100644 --- a/sherpa-onnx/csrc/melo-tts-lexicon.cc +++ b/sherpa-onnx/csrc/melo-tts-lexicon.cc @@ -8,7 +8,6 @@ #include // NOLINT #include #include -#include #include #include #include @@ -53,14 +52,14 @@ class MeloTtsLexicon::Impl { { auto buf = ReadFile(mgr, tokens); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); InitTokens(is); } { auto buf = ReadFile(mgr, lexicon); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); InitLexicon(is); } } diff --git a/sherpa-onnx/csrc/offline-recognizer-impl.cc b/sherpa-onnx/csrc/offline-recognizer-impl.cc index cb1c18a410..5b91c9d261 100644 --- a/sherpa-onnx/csrc/offline-recognizer-impl.cc +++ b/sherpa-onnx/csrc/offline-recognizer-impl.cc @@ -6,7 +6,7 @@ #include #include -#include +#include #include #include @@ -806,7 +806,7 @@ OfflineRecognizerImpl::OfflineRecognizerImpl( SHERPA_ONNX_LOGE("rule fst: %s", f.c_str()); } auto buf = ReadFile(mgr, f); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); itn_list_.push_back(std::make_unique(is)); } } @@ -824,7 +824,7 @@ OfflineRecognizerImpl::OfflineRecognizerImpl( auto buf = ReadFile(mgr, f); std::unique_ptr s( - new std::istrstream(buf.data(), buf.size())); + new std::istringstream(std::string(buf.data(), buf.size()))); std::unique_ptr> reader( fst::FarReader::Open(std::move(s))); diff --git a/sherpa-onnx/csrc/offline-tts-character-frontend.cc b/sherpa-onnx/csrc/offline-tts-character-frontend.cc index 6a1df6e87a..63a306746e 100644 --- a/sherpa-onnx/csrc/offline-tts-character-frontend.cc +++ b/sherpa-onnx/csrc/offline-tts-character-frontend.cc @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include @@ -96,7 +95,7 @@ OfflineTtsCharacterFrontend::OfflineTtsCharacterFrontend( const OfflineTtsVitsModelMetaData &meta_data) : meta_data_(meta_data) { auto buf = ReadFile(mgr, tokens); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); token2id_ = ReadTokens(is); } diff --git a/sherpa-onnx/csrc/offline-tts-kitten-impl.h b/sherpa-onnx/csrc/offline-tts-kitten-impl.h index 34763d17ee..0366c84d33 100644 --- a/sherpa-onnx/csrc/offline-tts-kitten-impl.h +++ b/sherpa-onnx/csrc/offline-tts-kitten-impl.h @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include @@ -102,7 +102,7 @@ class OfflineTtsKittenImpl : public OfflineTtsImpl { #endif } auto buf = ReadFile(mgr, f); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); tn_list_.push_back(std::make_unique(is)); } } @@ -124,7 +124,7 @@ class OfflineTtsKittenImpl : public OfflineTtsImpl { auto buf = ReadFile(mgr, f); std::unique_ptr s( - new std::istrstream(buf.data(), buf.size())); + new std::istringstream(std::string(buf.data(), buf.size()))); std::unique_ptr> reader( fst::FarReader::Open(std::move(s))); diff --git a/sherpa-onnx/csrc/offline-tts-kokoro-impl.h b/sherpa-onnx/csrc/offline-tts-kokoro-impl.h index 93e5d03c10..0ca2921114 100644 --- a/sherpa-onnx/csrc/offline-tts-kokoro-impl.h +++ b/sherpa-onnx/csrc/offline-tts-kokoro-impl.h @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include @@ -103,7 +103,7 @@ class OfflineTtsKokoroImpl : public OfflineTtsImpl { #endif } auto buf = ReadFile(mgr, f); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); tn_list_.push_back(std::make_unique(is)); } } @@ -125,7 +125,7 @@ class OfflineTtsKokoroImpl : public OfflineTtsImpl { auto buf = ReadFile(mgr, f); std::unique_ptr s( - new std::istrstream(buf.data(), buf.size())); + new std::istringstream(std::string(buf.data(), buf.size()))); std::unique_ptr> reader( fst::FarReader::Open(std::move(s))); diff --git a/sherpa-onnx/csrc/offline-tts-matcha-impl.h b/sherpa-onnx/csrc/offline-tts-matcha-impl.h index 9440e25a04..81ee7bf51d 100644 --- a/sherpa-onnx/csrc/offline-tts-matcha-impl.h +++ b/sherpa-onnx/csrc/offline-tts-matcha-impl.h @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include @@ -151,7 +151,7 @@ class OfflineTtsMatchaImpl : public OfflineTtsImpl { #endif } auto buf = ReadFile(mgr, f); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); tn_list_.push_back(std::make_unique(is)); } } @@ -173,7 +173,7 @@ class OfflineTtsMatchaImpl : public OfflineTtsImpl { auto buf = ReadFile(mgr, f); std::unique_ptr s( - new std::istrstream(buf.data(), buf.size())); + new std::istringstream(std::string(buf.data(), buf.size()))); std::unique_ptr> reader( fst::FarReader::Open(std::move(s))); diff --git a/sherpa-onnx/csrc/offline-tts-pocket-impl.h b/sherpa-onnx/csrc/offline-tts-pocket-impl.h index 7e8284454c..b9cccdc917 100644 --- a/sherpa-onnx/csrc/offline-tts-pocket-impl.h +++ b/sherpa-onnx/csrc/offline-tts-pocket-impl.h @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -115,7 +116,7 @@ class OfflineTtsPocketImpl : public OfflineTtsImpl { #endif } auto buf = ReadFile(mgr, f); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); tn_list_.push_back(std::make_unique(is)); } } @@ -137,7 +138,7 @@ class OfflineTtsPocketImpl : public OfflineTtsImpl { auto buf = ReadFile(mgr, f); std::unique_ptr s( - new std::istrstream(buf.data(), buf.size())); + new std::istringstream(std::string(buf.data(), buf.size()))); std::unique_ptr> reader( fst::FarReader::Open(std::move(s))); diff --git a/sherpa-onnx/csrc/offline-tts-vits-impl.h b/sherpa-onnx/csrc/offline-tts-vits-impl.h index 2c9fba187f..d18efdf810 100644 --- a/sherpa-onnx/csrc/offline-tts-vits-impl.h +++ b/sherpa-onnx/csrc/offline-tts-vits-impl.h @@ -6,7 +6,7 @@ #include #include -#include +#include #include #include @@ -103,7 +103,7 @@ class OfflineTtsVitsImpl : public OfflineTtsImpl { #endif } auto buf = ReadFile(mgr, f); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); tn_list_.push_back(std::make_unique(is)); } } @@ -125,7 +125,7 @@ class OfflineTtsVitsImpl : public OfflineTtsImpl { auto buf = ReadFile(mgr, f); std::unique_ptr s( - new std::istrstream(buf.data(), buf.size())); + new std::istringstream(std::string(buf.data(), buf.size()))); std::unique_ptr> reader( fst::FarReader::Open(std::move(s))); diff --git a/sherpa-onnx/csrc/offline-tts-zipvoice-impl.h b/sherpa-onnx/csrc/offline-tts-zipvoice-impl.h index 1064c1451a..0b74ba0827 100644 --- a/sherpa-onnx/csrc/offline-tts-zipvoice-impl.h +++ b/sherpa-onnx/csrc/offline-tts-zipvoice-impl.h @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include diff --git a/sherpa-onnx/csrc/online-recognizer-impl.cc b/sherpa-onnx/csrc/online-recognizer-impl.cc index 1397a8ed60..1120212c4c 100644 --- a/sherpa-onnx/csrc/online-recognizer-impl.cc +++ b/sherpa-onnx/csrc/online-recognizer-impl.cc @@ -6,7 +6,7 @@ #include #include -#include +#include #include #include @@ -217,7 +217,7 @@ OnlineRecognizerImpl::OnlineRecognizerImpl(Manager *mgr, SHERPA_ONNX_LOGE("rule fst: %s", f.c_str()); } auto buf = ReadFile(mgr, f); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); itn_list_.push_back(std::make_unique(is)); } } @@ -235,7 +235,7 @@ OnlineRecognizerImpl::OnlineRecognizerImpl(Manager *mgr, auto buf = ReadFile(mgr, f); std::unique_ptr s( - new std::istrstream(buf.data(), buf.size())); + new std::istringstream(std::string(buf.data(), buf.size()))); std::unique_ptr> reader( fst::FarReader::Open(std::move(s))); diff --git a/sherpa-onnx/csrc/piper-phonemize-lexicon.cc b/sherpa-onnx/csrc/piper-phonemize-lexicon.cc index 8b9e4474da..f921b9cdca 100644 --- a/sherpa-onnx/csrc/piper-phonemize-lexicon.cc +++ b/sherpa-onnx/csrc/piper-phonemize-lexicon.cc @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include @@ -347,7 +346,7 @@ PiperPhonemizeLexicon::PiperPhonemizeLexicon( : vits_meta_data_(vits_meta_data) { { auto buf = ReadFile(mgr, tokens); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); token2id_ = ReadTokens(is); } @@ -400,7 +399,7 @@ PiperPhonemizeLexicon::PiperPhonemizeLexicon( : matcha_meta_data_(matcha_meta_data), is_matcha_(true) { { auto buf = ReadFile(mgr, tokens); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); token2id_ = ReadTokens(is); } @@ -417,7 +416,7 @@ PiperPhonemizeLexicon::PiperPhonemizeLexicon( : kokoro_meta_data_(kokoro_meta_data), is_kokoro_(true) { { auto buf = ReadFile(mgr, tokens); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); token2id_ = ReadTokens(is); } @@ -434,7 +433,7 @@ PiperPhonemizeLexicon::PiperPhonemizeLexicon( : kitten_meta_data_(kitten_meta_data), is_kitten_(true) { { auto buf = ReadFile(mgr, tokens); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); token2id_ = ReadTokens(is); } diff --git a/sherpa-onnx/csrc/rknn/keyword-spotter-transducer-rknn-impl.h b/sherpa-onnx/csrc/rknn/keyword-spotter-transducer-rknn-impl.h index 041cfc4d70..96c1f8cfd1 100644 --- a/sherpa-onnx/csrc/rknn/keyword-spotter-transducer-rknn-impl.h +++ b/sherpa-onnx/csrc/rknn/keyword-spotter-transducer-rknn-impl.h @@ -9,7 +9,7 @@ #include #include // NOLINT #include -#include +#include #include #include @@ -260,7 +260,7 @@ class KeywordSpotterTransducerRknnImpl : public KeywordSpotterImpl { auto buf = ReadFile(mgr, config_.keywords_file); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); if (!is) { #if __OHOS__ diff --git a/sherpa-onnx/csrc/symbol-table.cc b/sherpa-onnx/csrc/symbol-table.cc index 8e26cd4fbb..c046c3e6fc 100644 --- a/sherpa-onnx/csrc/symbol-table.cc +++ b/sherpa-onnx/csrc/symbol-table.cc @@ -10,7 +10,6 @@ #include #include #include -#include #include #include @@ -164,7 +163,7 @@ template SymbolTable::SymbolTable(Manager *mgr, const std::string &filename) { auto buf = ReadFile(mgr, filename); - std::istrstream is(buf.data(), buf.size()); + std::istringstream is(std::string(buf.data(), buf.size())); Init(is); } diff --git a/sherpa-onnx/jni/common.h b/sherpa-onnx/jni/common.h index 716a3ab9f4..1acf0f1103 100644 --- a/sherpa-onnx/jni/common.h +++ b/sherpa-onnx/jni/common.h @@ -8,7 +8,7 @@ #include #if __ANDROID_API__ >= 9 -#include +#include #include "android/asset_manager.h" #include "android/asset_manager_jni.h" diff --git a/sherpa-onnx/jni/wave-reader.cc b/sherpa-onnx/jni/wave-reader.cc index a5b57c67fb..8c87fb9dcd 100644 --- a/sherpa-onnx/jni/wave-reader.cc +++ b/sherpa-onnx/jni/wave-reader.cc @@ -101,7 +101,7 @@ Java_com_k2fsa_sherpa_onnx_WaveReader_00024Companion_readWaveFromAsset( } std::vector buffer = sherpa_onnx::ReadFile(mgr, p_filename); - std::istrstream is(buffer.data(), buffer.size()); + std::istringstream is(std::string(buffer.data(), buffer.size())); #else std::ifstream is(p_filename, std::ios::binary); #endif