// Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include #include "utils/strings.h" namespace ppspeech { std::vector StrSplit(const std::string& str, const char* delim, bool omit_empty_string) { std::vector outs; int start = 0; int end = str.size(); int found = 0; while (found != std::string::npos) { found = str.find_first_of(delim, start); // start != end condition is for when the delimiter is at the end if (!omit_empty_string || (found != start && start != end)) { outs.push_back(str.substr(start, found - start)); } start = found + 1; } return outs; } std::string StrJoin(const std::vector& strs, const char* delim) { std::stringstream ss; for (ssize_t i = 0; i < strs.size(); ++i) { ss << strs[i]; if (i < strs.size() - 1) { ss << std::string(delim); } } return ss.str(); } #ifdef _MSC_VER std::wstring ToWString(const std::string& str) { unsigned len = str.size() * 2; setlocale(LC_CTYPE, ""); wchar_t* p = new wchar_t[len]; mbstowcs(p, str.c_str(), len); std::wstring wstr(p); delete[] p; return wstr; } #endif } // namespace ppspeech