From 6a9073a0cbcbb5b8519988f693d9387d5c9febeb Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Thu, 11 Jun 2020 13:50:26 -0400 Subject: [PATCH] Add count_words for C-Strings --- src/utils.cpp | 14 +++++++++++--- src/utils.h | 8 ++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/utils.cpp b/src/utils.cpp index 86f56e7b2a..88677bf542 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -365,12 +365,12 @@ std::string utils::trim_comment(const std::string & line) { } /* ---------------------------------------------------------------------- - Return number of words + return number of words ------------------------------------------------------------------------- */ -size_t utils::count_words(const std::string & text) { +size_t utils::count_words(const char * text) { size_t count = 0; - const char * buf = text.c_str(); + const char * buf = text; char c = *buf; while (c) { @@ -393,6 +393,14 @@ size_t utils::count_words(const std::string & text) { return count; } +/* ---------------------------------------------------------------------- + return number of words +------------------------------------------------------------------------- */ + +size_t utils::count_words(const std::string & text) { + return utils::count_words(text.c_str()); +} + /* ---------------------------------------------------------------------- Return number of words ------------------------------------------------------------------------- */ diff --git a/src/utils.h b/src/utils.h index bce9ff3e66..ef272087b7 100644 --- a/src/utils.h +++ b/src/utils.h @@ -166,6 +166,14 @@ namespace LAMMPS_NS { */ size_t count_words(const std::string & text); + /** + * \brief Count words in C-string, ignore any whitespace matching " \t\r\n\f" + * \param text string that should be searched + * \param separators string containing characters that will be treated as whitespace + * \return number of words found + */ + size_t count_words(const char * text); + /** * \brief Count words in a single line, trim anything from '#' onward * \param text string that should be trimmed and searched