lang:cpp:string
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
lang:cpp:string [2019/02/11 00:16] – Création avec "Split" root | lang:cpp:string [2023/05/29 11:58] (Version actuelle) – [consteval avec std::string_view] : fix lien root | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====wstring==== | ||
+ | '' | ||
+ | <code cpp> | ||
+ | #include < | ||
+ | #include <ios> | ||
+ | #include < | ||
+ | |||
+ | std:: | ||
+ | const std::locale utf8_locale = std:: | ||
+ | out.imbue(utf8_locale); | ||
+ | // Verify that the file opened correctly | ||
+ | std:: | ||
+ | out << s << std::endl; | ||
+ | </ | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | * Conversion entre string et wstring | ||
+ | |||
+ | Sous windows : | ||
+ | |||
+ | <code cpp> | ||
+ | std:: | ||
+ | { | ||
+ | int slength = (int)s.length() + 1; | ||
+ | int len = MultiByteToWideChar(CP_ACP, | ||
+ | std:: | ||
+ | MultiByteToWideChar(CP_ACP, | ||
+ | return r; | ||
+ | } | ||
+ | |||
+ | std::string ws2s(const std:: | ||
+ | { | ||
+ | int slength = (int)s.length() + 1; | ||
+ | int len = WideCharToMultiByte(CP_ACP, | ||
+ | std::string r(len, ' | ||
+ | WideCharToMultiByte(CP_ACP, | ||
+ | return r; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | ====stringstream=== | ||
+ | Le résultat ne va pas être le même si on donne à '' | ||
+ | |||
+ | ss << static_cast< | ||
+ | |||
+ | va donner '' | ||
+ | |||
+ | ss << static_cast< | ||
+ | |||
+ | va donner '' | ||
+ | |||
+ | ====consteval avec std:: | ||
+ | |||
+ | Ce n'est pas possible. Il faut travailler avec les '' | ||
+ | |||
+ | <code cpp> | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | template <class T, std::size_t N> | ||
+ | struct decayable_array : std:: | ||
+ | constexpr operator const T*() const { return this-> | ||
+ | }; | ||
+ | |||
+ | template < | ||
+ | consteval decayable_array< | ||
+ | decayable_array< | ||
+ | |||
+ | for (std:: | ||
+ | data[N - i - 2] = arr[i]; | ||
+ | } | ||
+ | |||
+ | return data; | ||
+ | } | ||
+ | |||
+ | int main() { return strlen(reverse(" | ||
+ | </ | ||
+ | |||
+ | <code asm> | ||
+ | main: | ||
+ | mov eax, 3 | ||
+ | ret | ||
+ | </ | ||
+ | |||
+ | [[https:// | ||
====Split==== | ====Split==== | ||
+ | ===string=== | ||
<code cpp> | <code cpp> | ||
std:: | std:: | ||
Ligne 8: | Ligne 97: | ||
</ | </ | ||
- | [[https:// | + | [[https:// |
+ | |||
+ | ===string_view=== | ||
+ | <code cpp> | ||
+ | std:: | ||
+ | splitSV(std:: | ||
+ | { | ||
+ | std:: | ||
+ | size_t first = 0; | ||
+ | |||
+ | while (first < strv.size()) | ||
+ | { | ||
+ | const auto second = strv.find_first_of(delims, | ||
+ | |||
+ | if (first != second) | ||
+ | output.emplace_back(strv.substr(first, | ||
+ | |||
+ | if (second == std:: | ||
+ | break; | ||
+ | |||
+ | first = second + 1; | ||
+ | } | ||
+ | |||
+ | return output; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | [[https:// |
lang/cpp/string.1549840611.txt.gz · Dernière modification : 2019/02/11 00:16 de root