Merge pull request #1684 from lioncash/common
common/string_util: Minor cleanup
This commit is contained in:
commit
ebf1b58a22
|
@ -4,11 +4,10 @@
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
#include <cerrno>
|
|
||||||
#include <codecvt>
|
#include <codecvt>
|
||||||
#include <cstdio>
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <cstring>
|
#include <locale>
|
||||||
|
#include <sstream>
|
||||||
#include "common/common_paths.h"
|
#include "common/common_paths.h"
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
#include "common/string_util.h"
|
#include "common/string_util.h"
|
||||||
|
@ -33,24 +32,6 @@ std::string ToUpper(std::string str) {
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
// For Debugging. Read out an u8 array.
|
|
||||||
std::string ArrayToString(const u8* data, std::size_t size, int line_len, bool spaces) {
|
|
||||||
std::ostringstream oss;
|
|
||||||
oss << std::setfill('0') << std::hex;
|
|
||||||
|
|
||||||
for (int line = 0; size; ++data, --size) {
|
|
||||||
oss << std::setw(2) << (int)*data;
|
|
||||||
|
|
||||||
if (line_len == ++line) {
|
|
||||||
oss << '\n';
|
|
||||||
line = 0;
|
|
||||||
} else if (spaces)
|
|
||||||
oss << ' ';
|
|
||||||
}
|
|
||||||
|
|
||||||
return oss.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string StringFromBuffer(const std::vector<u8>& data) {
|
std::string StringFromBuffer(const std::vector<u8>& data) {
|
||||||
return std::string(data.begin(), std::find(data.begin(), data.end(), '\0'));
|
return std::string(data.begin(), std::find(data.begin(), data.end(), '\0'));
|
||||||
}
|
}
|
||||||
|
@ -75,40 +56,6 @@ std::string StripQuotes(const std::string& s) {
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TryParse(const std::string& str, u32* const output) {
|
|
||||||
char* endptr = nullptr;
|
|
||||||
|
|
||||||
// Reset errno to a value other than ERANGE
|
|
||||||
errno = 0;
|
|
||||||
|
|
||||||
unsigned long value = strtoul(str.c_str(), &endptr, 0);
|
|
||||||
|
|
||||||
if (!endptr || *endptr)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (errno == ERANGE)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
#if ULONG_MAX > UINT_MAX
|
|
||||||
if (value >= 0x100000000ull && value <= 0xFFFFFFFF00000000ull)
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
*output = static_cast<u32>(value);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TryParse(const std::string& str, bool* const output) {
|
|
||||||
if ("1" == str || "true" == ToLower(str))
|
|
||||||
*output = true;
|
|
||||||
else if ("0" == str || "false" == ToLower(str))
|
|
||||||
*output = false;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string StringFromBool(bool value) {
|
std::string StringFromBool(bool value) {
|
||||||
return value ? "True" : "False";
|
return value ? "True" : "False";
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,8 +5,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <iomanip>
|
|
||||||
#include <sstream>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
|
@ -19,44 +17,13 @@ std::string ToLower(std::string str);
|
||||||
/// Make a string uppercase
|
/// Make a string uppercase
|
||||||
std::string ToUpper(std::string str);
|
std::string ToUpper(std::string str);
|
||||||
|
|
||||||
std::string ArrayToString(const u8* data, std::size_t size, int line_len = 20, bool spaces = true);
|
|
||||||
|
|
||||||
std::string StringFromBuffer(const std::vector<u8>& data);
|
std::string StringFromBuffer(const std::vector<u8>& data);
|
||||||
|
|
||||||
std::string StripSpaces(const std::string& s);
|
std::string StripSpaces(const std::string& s);
|
||||||
std::string StripQuotes(const std::string& s);
|
std::string StripQuotes(const std::string& s);
|
||||||
|
|
||||||
// Thousand separator. Turns 12345678 into 12,345,678
|
|
||||||
template <typename I>
|
|
||||||
std::string ThousandSeparate(I value, int spaces = 0) {
|
|
||||||
std::ostringstream oss;
|
|
||||||
|
|
||||||
// std::locale("") seems to be broken on many platforms
|
|
||||||
#if defined _WIN32 || (defined __linux__ && !defined __clang__)
|
|
||||||
oss.imbue(std::locale(""));
|
|
||||||
#endif
|
|
||||||
oss << std::setw(spaces) << value;
|
|
||||||
|
|
||||||
return oss.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string StringFromBool(bool value);
|
std::string StringFromBool(bool value);
|
||||||
|
|
||||||
bool TryParse(const std::string& str, bool* output);
|
|
||||||
bool TryParse(const std::string& str, u32* output);
|
|
||||||
|
|
||||||
template <typename N>
|
|
||||||
static bool TryParse(const std::string& str, N* const output) {
|
|
||||||
std::istringstream iss(str);
|
|
||||||
|
|
||||||
N tmp = 0;
|
|
||||||
if (iss >> tmp) {
|
|
||||||
*output = tmp;
|
|
||||||
return true;
|
|
||||||
} else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string TabsToSpaces(int tab_size, std::string in);
|
std::string TabsToSpaces(int tab_size, std::string in);
|
||||||
|
|
||||||
void SplitString(const std::string& str, char delim, std::vector<std::string>& output);
|
void SplitString(const std::string& str, char delim, std::vector<std::string>& output);
|
||||||
|
|
Reference in New Issue