mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-07 12:21:27 +01:00
Summary: `std::mismatch( InputIt1 first1, InputIt1 last1, InputIt2 first2 )` assumes that container for `first2` iterator contains at least `last1 - first` elements, which is not the case if `prefix` is longer than `str` Found while running unit tests on Windows Pull Request resolved: https://github.com/pytorch/pytorch/pull/36672 Differential Revision: D21049407 Pulled By: malfet fbshipit-source-id: ad45779d47a0c6898900e0247c920829a2179f62
52 lines
1.2 KiB
C++
52 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <algorithm>
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "caffe2/core/common.h"
|
|
|
|
namespace caffe2 {
|
|
|
|
CAFFE2_API std::vector<std::string>
|
|
split(char separator, const std::string& string, bool ignore_empty = false);
|
|
|
|
CAFFE2_API std::string trim(const std::string& str);
|
|
|
|
CAFFE2_API size_t editDistance(
|
|
const std::string& s1,
|
|
const std::string& s2,
|
|
size_t max_distance = 0);
|
|
|
|
CAFFE2_API inline bool StartsWith(
|
|
const std::string& str,
|
|
const std::string& prefix) {
|
|
return str.length() >= prefix.length() &&
|
|
std::mismatch(prefix.begin(), prefix.end(), str.begin()).first ==
|
|
prefix.end();
|
|
}
|
|
|
|
CAFFE2_API inline bool EndsWith(
|
|
const std::string& full,
|
|
const std::string& ending) {
|
|
if (full.length() >= ending.length()) {
|
|
return (
|
|
0 ==
|
|
full.compare(full.length() - ending.length(), ending.length(), ending));
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
CAFFE2_API int32_t editDistanceHelper(
|
|
const char* s1,
|
|
size_t s1_len,
|
|
const char* s2,
|
|
size_t s2_len,
|
|
std::vector<size_t>& current,
|
|
std::vector<size_t>& previous,
|
|
std::vector<size_t>& previous1,
|
|
size_t max_distance);
|
|
} // namespace caffe2
|