You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PaddleSpeech/runtime/engine/common/utils/strings.cc

64 lines
1.9 KiB

// 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 <sstream>
#include "utils/strings.h"
namespace ppspeech {
std::vector<std::string> StrSplit(const std::string& str,
const char* delim,
bool omit_empty_string) {
std::vector<std::string> 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<std::string>& 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