dl
dl
base
dl_string_n.h
浏览该文件的文档.
1
12
#pragma once
13
14
#include <cassert>
15
#include <cstring>
16
#include <string_view>
17
#include <string>
18
19
20
namespace
dl
21
{
23
template
<
size_t
N>
24
class
StringN
25
{
26
public
:
27
char
operator[]
(std::size_t i)
const
28
{
29
assert(i <
N
);
30
return
_data[i];
31
}
32
const
char
*
c_str
()
const
33
{
34
_end = 0;
35
return
_data;
36
}
37
40
void
Fill
(
char
v)
41
{
42
for
(
auto
& iter : _data)
43
iter = v;
44
}
45
46
char
*
begin
()
47
{
48
return
&_data[0];
49
}
50
char
*
end
()
51
{
52
return
&_end;
53
}
54
55
operator
std::string()
const
56
{
57
return
{ _data };
58
}
59
60
operator
std::string_view()
const
61
{
62
return
std::string_view{ _data };
63
}
64
65
StringN
() =
default
;
66
67
StringN
(
const
std::string& str)
68
{
69
size_t
n = (std::min)(
N
, str.size());
70
memcpy(_data, str.data(), n);
71
_data[n] = 0;
72
}
73
StringN
(
const
char
* str)
74
{
75
size_t
n = (std::min)(
N
, strlen(str));
76
memcpy(_data, str, n);
77
_data[n] = 0;
78
}
79
private
:
80
char
_data[
N
- 1];
81
mutable
char
_end;
82
};
83
84
template
<
size_t
N>
85
bool
operator==
(
const
StringN<N>
& a, std::string_view b)
86
{
87
return
std::string_view(a) == b;
88
}
89
}
dl::StringN
定长字符串
定义
dl_string_n.h:25
dl::StringN::end
char * end()
定义
dl_string_n.h:50
dl::StringN::c_str
const char * c_str() const
定义
dl_string_n.h:32
dl::StringN::Fill
void Fill(char v)
填充值
定义
dl_string_n.h:40
dl::StringN::StringN
StringN(const std::string &str)
定义
dl_string_n.h:67
dl::StringN::StringN
StringN(const char *str)
定义
dl_string_n.h:73
dl::StringN::operator[]
char operator[](std::size_t i) const
定义
dl_string_n.h:27
dl::StringN::begin
char * begin()
定义
dl_string_n.h:46
dl::StringN::StringN
StringN()=default
dl
定义
dl_array.h:22
dl::KeyCode::N
@ N
定义
dl_input.h:115
dl::operator==
constexpr bool operator==(const Array< T, N > &a, const Array< T, N > &b)
定义
dl_array.h:346
制作者
1.13.1