|
2 | 2 |
|
3 | 3 | 자주 사용하는 Visual Studio 에디터의 기능을 설명합니다. |
4 | 4 |
|
5 | | -# 폰트 설정 |
| 5 | +## 폰트 설정 |
6 | 6 |
|
7 | | -코딩을 위해 전용 에디터를 사용하는 것처럼, 코딩을 위한 전용 폰트도 있습니다. 기본적으로 이러한 폰트들은 모든 글자의 너비가 같아야 합니다. |
| 7 | +코딩을 위해 전용 에디터를 사용하는 것처럼, 코딩을 위한 전용 폰트도 있습니다. 기본적으로 이러한 폰트들은 모든 글자의 너비가 같습니다. |
8 | 8 |
|
9 | 9 |  |
10 | 10 |
|
11 | 11 | Calibri의 `H`와 `l`의 너비는 다른 반면에, Consolas의 `H`와 `l`은 너비가 같다는 것을 확인할 수 있습니다. 이렇게 모든 글자의 너비가 같은 폰트를 `고정폭 폰트(monospaced font)`라고 합니다. 고정폭 폰트를 사용하면 코드를 더 잘 정리할 수 있고, 코드의 가독성을 높일 수 있습니다. |
12 | 12 |
|
13 | | -```cpp |
14 | | -template <typename StringT = std::string> |
15 | | -struct CaseInsensitiveEqual |
16 | | -{ |
17 | | - bool operator()(StringT const& lhs, StringT const& rhs) const |
18 | | - { |
19 | | - using namespace std; |
20 | | - return lhs.size() == rhs.size() |
21 | | - && equal(lhs.begin(), |
22 | | - lhs.end(), |
23 | | - rhs.begin(), |
24 | | - [](auto l, auto r) { |
25 | | - return tolower(l) == tolower(r); |
26 | | - }); |
27 | | - } |
28 | | -}; |
| 13 | + |
29 | 14 |
|
30 | | -size_t cnt = std::count_if(v.begin(), |
31 | | - v.end(), |
32 | | - [](auto const& str) { |
33 | | - return CaseInsensitiveEqual< |
34 | | - decltype(v)::value_type> {}(str, "hello"); |
35 | | - }); |
36 | | -``` |
| 15 | +> 폰트에 의한 차이를 보여주기 위해 일부러 복잡한 코드를 넣었으니 걱정하지 않으셔도 괜찮습니다. 위 예제의 프로그램은 `3`을 출력합니다. |
37 | 16 | |
38 | | -> |
39 | | -> template \<typename StringT = std::wstring_view\> |
40 | | -> |
41 | | -> struct CaseInsensitiveEqual |
42 | | -> |
43 | | -> \{ |
44 | | -> |
45 | | -> bool operator()(StringT const& lhs, StringT const& rhs) const |
46 | | -> |
47 | | -> \{ |
48 | | -> |
49 | | -> using namespace std; |
50 | | -> |
51 | | -> return lhs.size() == rhs.size() |
52 | | -> |
53 | | -> && equal(lhs.begin(), |
54 | | -> |
55 | | -> lhs.end(), |
56 | | -> |
57 | | -> rhs.begin(), |
58 | | -> |
59 | | -> \[\](auto l, auto r) \{ |
60 | | -> |
61 | | -> return tolower(l) == tolower(r); |
62 | | -> |
63 | | -> \}); |
64 | | -> |
65 | | -> \} |
66 | | -> |
67 | | -> \}; |
68 | | -> |
69 | | -> |
70 | | -> |
71 | | -> size_t cnt = std\:\:count_if(v.begin(), |
72 | | -> |
73 | | -> v.end(), |
74 | | -> |
75 | | -> \[\](auto const& str) \{ |
76 | | -> |
77 | | -> return CaseInsensitiveEqual\< |
78 | | -> |
79 | | -> decltype(v)\:\:value_type\> {}(str, "hello"); |
80 | | -> |
81 | | -> \}); |
| 17 | +코드의 가독성을 더 높이기 위해 요즘 나오는 코딩용 폰트는 더 다양한 기능을 가집니다. |
82 | 18 |
|
83 | | -너비가 같은 폰트를 사용하면 각 줄의 들여쓰기를 맞출 수 있는 것에 반해, 너비가 서로 다르면 들여쓰기의 간격을 조절하기 힘들다는 것을 알 수 있습니다. |
| 19 | +*`O`와 `0`, `l`와 `1` 등 모양이 비슷한 글자들이 잘 구분되도록 합니다. |
0 commit comments