Skip to content

Commit 2f35ad2

Browse files
committed
[000_String] Right 함수와 대응되는 Left 함수 구현 (이걸 왜 빠트렸을까..?)
1 parent fd19cc9 commit 2f35ad2

File tree

5 files changed

+65
-34
lines changed

5 files changed

+65
-34
lines changed

Src/000_String/STLString.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,14 @@ namespace core
324324
return strContext.substr(0, nIndex);
325325
}
326326

327+
//////////////////////////////////////////////////////////////////////////
328+
std::tstring Left(const std::tstring& strContext, size_t tCount)
329+
{
330+
size_t tLength = strContext.length();
331+
size_t tTryCount = tLength < tCount ? tLength : tCount;
332+
return strContext.substr(0, tTryCount);
333+
}
334+
327335
//////////////////////////////////////////////////////////////////////////
328336
std::tstring Right(const std::tstring& strContext, size_t tCount)
329337
{

Src/000_String/STLString.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ namespace core
4242
void Swap(std::wstring& strLeft, std::wstring& strRight);
4343
std::string Split(const std::string& strContext, std::string strDelimiter, std::string* pstrBack = NULL);
4444
std::wstring Split(const std::wstring& strContext, std::wstring strDelimiter, std::wstring* pstrBack = NULL);
45+
std::string Left(const std::string& strContext, size_t tCount);
46+
std::wstring Left(const std::wstring& strContext, size_t tCount);
4547
std::string Right(const std::string& strContext, size_t tCount);
4648
std::wstring Right(const std::wstring& strContext, size_t tCount);
4749
bool StrCmpWithWildcard(std::string strContext, std::string strPattern);

Test/StringTest/STLStringTest.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,27 @@ TEST(STLStringTest, RightTest_FalseMaxExceed)
9191
EXPECT_EQ(TEXT("1234567890"), Right(strContents, 11));
9292
}
9393

94+
//////////////////////////////////////////////////////////////////////////
95+
TEST(STLStringTest, LeftTest)
96+
{
97+
std::tstring strContents = TEXT("1234567890");
98+
EXPECT_EQ(TEXT("12345"), Left(strContents, 5));
99+
}
100+
101+
//////////////////////////////////////////////////////////////////////////
102+
TEST(STLStringTest, LeftTest_FalseNegative)
103+
{
104+
std::tstring strContents = TEXT("1234567890");
105+
EXPECT_EQ(TEXT("1234567890"), Left(strContents, -1));
106+
}
107+
108+
//////////////////////////////////////////////////////////////////////////
109+
TEST(STLStringTest, LeftTest_FalseMaxExceed)
110+
{
111+
std::tstring strContents = TEXT("1234567890");
112+
EXPECT_EQ(TEXT("1234567890"), Left(strContents, 11));
113+
}
114+
94115
//////////////////////////////////////////////////////////////////////////
95116
TEST(STLStringTest, RightTest_FalseZero)
96117
{

Test/StringTest/StringTestA.vcxproj

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,14 @@
3838
<ProjectGuid>{B8C4DF82-4A9E-4E8E-9112-684C4D05FEEC}</ProjectGuid>
3939
<RootNamespace>MyStringTestA</RootNamespace>
4040
<Keyword>Win32Proj</Keyword>
41-
<WindowsTargetPlatformVersion>7.0</WindowsTargetPlatformVersion>
41+
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
4242
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
4343
<Platform Condition=" '$(Platform)' == '' ">Win32</Platform>
4444
</PropertyGroup>
4545
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
4646
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'" Label="Configuration">
4747
<ConfigurationType>Application</ConfigurationType>
48-
<PlatformToolset>v141_xp</PlatformToolset>
48+
<PlatformToolset>v142</PlatformToolset>
4949
<CharacterSet>MultiByte</CharacterSet>
5050
<WholeProgramOptimization>true</WholeProgramOptimization>
5151
<OutputPath>.\</OutputPath>
@@ -55,7 +55,7 @@
5555
</PropertyGroup>
5656
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugMT|Win32'" Label="Configuration">
5757
<ConfigurationType>Application</ConfigurationType>
58-
<PlatformToolset>v141_xp</PlatformToolset>
58+
<PlatformToolset>v142</PlatformToolset>
5959
<CharacterSet>MultiByte</CharacterSet>
6060
<OutputPath>.\</OutputPath>
6161
<OutDir>../../Build/Test\</OutDir>
@@ -64,7 +64,7 @@
6464
</PropertyGroup>
6565
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
6666
<ConfigurationType>Application</ConfigurationType>
67-
<PlatformToolset>v141_xp</PlatformToolset>
67+
<PlatformToolset>v142</PlatformToolset>
6868
<CharacterSet>MultiByte</CharacterSet>
6969
<WholeProgramOptimization>true</WholeProgramOptimization>
7070
<OutputPath>.\</OutputPath>
@@ -74,7 +74,7 @@
7474
</PropertyGroup>
7575
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
7676
<ConfigurationType>Application</ConfigurationType>
77-
<PlatformToolset>v141_xp</PlatformToolset>
77+
<PlatformToolset>v142</PlatformToolset>
7878
<CharacterSet>MultiByte</CharacterSet>
7979
<OutputPath>.\</OutputPath>
8080
<OutDir>../../Build/Test\</OutDir>
@@ -83,7 +83,7 @@
8383
</PropertyGroup>
8484
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'" Label="Configuration">
8585
<ConfigurationType>Application</ConfigurationType>
86-
<PlatformToolset>v141_xp</PlatformToolset>
86+
<PlatformToolset>v142</PlatformToolset>
8787
<CharacterSet>MultiByte</CharacterSet>
8888
<WholeProgramOptimization>true</WholeProgramOptimization>
8989
<OutputPath>.\</OutputPath>
@@ -93,7 +93,7 @@
9393
</PropertyGroup>
9494
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugMT|x64'" Label="Configuration">
9595
<ConfigurationType>Application</ConfigurationType>
96-
<PlatformToolset>v141_xp</PlatformToolset>
96+
<PlatformToolset>v142</PlatformToolset>
9797
<CharacterSet>MultiByte</CharacterSet>
9898
<OutputPath>.\</OutputPath>
9999
<OutDir>../../Build/Test\</OutDir>
@@ -102,7 +102,7 @@
102102
</PropertyGroup>
103103
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
104104
<ConfigurationType>Application</ConfigurationType>
105-
<PlatformToolset>v141_xp</PlatformToolset>
105+
<PlatformToolset>v142</PlatformToolset>
106106
<CharacterSet>MultiByte</CharacterSet>
107107
<WholeProgramOptimization>true</WholeProgramOptimization>
108108
<OutputPath>.\</OutputPath>
@@ -112,7 +112,7 @@
112112
</PropertyGroup>
113113
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
114114
<ConfigurationType>Application</ConfigurationType>
115-
<PlatformToolset>v141_xp</PlatformToolset>
115+
<PlatformToolset>v142</PlatformToolset>
116116
<CharacterSet>MultiByte</CharacterSet>
117117
<OutputPath>.\</OutputPath>
118118
<OutDir>../../Build/Test\</OutDir>
@@ -163,7 +163,7 @@
163163
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
164164
</ClCompile>
165165
<Link>
166-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
166+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
167167
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
168168
<GenerateDebugInformation>true</GenerateDebugInformation>
169169
<SubSystem>Console</SubSystem>
@@ -186,7 +186,7 @@
186186
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
187187
</ClCompile>
188188
<Link>
189-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
189+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
190190
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
191191
<GenerateDebugInformation>true</GenerateDebugInformation>
192192
<SubSystem>Console</SubSystem>
@@ -206,7 +206,7 @@
206206
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
207207
</ClCompile>
208208
<Link>
209-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
209+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
210210
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
211211
<GenerateDebugInformation>true</GenerateDebugInformation>
212212
<SubSystem>Console</SubSystem>
@@ -231,7 +231,7 @@
231231
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
232232
</ClCompile>
233233
<Link>
234-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
234+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
235235
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
236236
<GenerateDebugInformation>true</GenerateDebugInformation>
237237
<SubSystem>Console</SubSystem>
@@ -253,7 +253,7 @@
253253
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
254254
</ClCompile>
255255
<Link>
256-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
256+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
257257
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
258258
<GenerateDebugInformation>true</GenerateDebugInformation>
259259
<SubSystem>Console</SubSystem>
@@ -276,7 +276,7 @@
276276
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
277277
</ClCompile>
278278
<Link>
279-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
279+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
280280
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
281281
<GenerateDebugInformation>true</GenerateDebugInformation>
282282
<SubSystem>Console</SubSystem>
@@ -296,7 +296,7 @@
296296
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
297297
</ClCompile>
298298
<Link>
299-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
299+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
300300
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
301301
<GenerateDebugInformation>true</GenerateDebugInformation>
302302
<SubSystem>Console</SubSystem>
@@ -321,7 +321,7 @@
321321
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
322322
</ClCompile>
323323
<Link>
324-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
324+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
325325
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
326326
<GenerateDebugInformation>true</GenerateDebugInformation>
327327
<SubSystem>Console</SubSystem>

Test/StringTest/StringTestW.vcxproj

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,51 +38,51 @@
3838
<ProjectGuid>{249A2BE7-781E-4F36-9825-FDB22221BE03}</ProjectGuid>
3939
<RootNamespace>MyStringTestW</RootNamespace>
4040
<Keyword>Win32Proj</Keyword>
41-
<WindowsTargetPlatformVersion>7.0</WindowsTargetPlatformVersion>
41+
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
4242
</PropertyGroup>
4343
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
4444
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'" Label="Configuration">
4545
<ConfigurationType>Application</ConfigurationType>
46-
<PlatformToolset>v141_xp</PlatformToolset>
46+
<PlatformToolset>v142</PlatformToolset>
4747
<CharacterSet>Unicode</CharacterSet>
4848
<WholeProgramOptimization>true</WholeProgramOptimization>
4949
</PropertyGroup>
5050
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugMT|Win32'" Label="Configuration">
5151
<ConfigurationType>Application</ConfigurationType>
52-
<PlatformToolset>v141_xp</PlatformToolset>
52+
<PlatformToolset>v142</PlatformToolset>
5353
<CharacterSet>Unicode</CharacterSet>
5454
</PropertyGroup>
5555
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
5656
<ConfigurationType>Application</ConfigurationType>
57-
<PlatformToolset>v141_xp</PlatformToolset>
57+
<PlatformToolset>v142</PlatformToolset>
5858
<CharacterSet>Unicode</CharacterSet>
5959
<WholeProgramOptimization>true</WholeProgramOptimization>
6060
</PropertyGroup>
6161
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
6262
<ConfigurationType>Application</ConfigurationType>
63-
<PlatformToolset>v141_xp</PlatformToolset>
63+
<PlatformToolset>v142</PlatformToolset>
6464
<CharacterSet>Unicode</CharacterSet>
6565
</PropertyGroup>
6666
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'" Label="Configuration">
6767
<ConfigurationType>Application</ConfigurationType>
68-
<PlatformToolset>v141_xp</PlatformToolset>
68+
<PlatformToolset>v142</PlatformToolset>
6969
<CharacterSet>Unicode</CharacterSet>
7070
<WholeProgramOptimization>true</WholeProgramOptimization>
7171
</PropertyGroup>
7272
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugMT|x64'" Label="Configuration">
7373
<ConfigurationType>Application</ConfigurationType>
74-
<PlatformToolset>v141_xp</PlatformToolset>
74+
<PlatformToolset>v142</PlatformToolset>
7575
<CharacterSet>Unicode</CharacterSet>
7676
</PropertyGroup>
7777
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
7878
<ConfigurationType>Application</ConfigurationType>
79-
<PlatformToolset>v141_xp</PlatformToolset>
79+
<PlatformToolset>v142</PlatformToolset>
8080
<CharacterSet>Unicode</CharacterSet>
8181
<WholeProgramOptimization>true</WholeProgramOptimization>
8282
</PropertyGroup>
8383
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
8484
<ConfigurationType>Application</ConfigurationType>
85-
<PlatformToolset>v141_xp</PlatformToolset>
85+
<PlatformToolset>v142</PlatformToolset>
8686
<CharacterSet>Unicode</CharacterSet>
8787
</PropertyGroup>
8888
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
@@ -169,7 +169,7 @@
169169
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
170170
</ClCompile>
171171
<Link>
172-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
172+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
173173
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
174174
<GenerateDebugInformation>true</GenerateDebugInformation>
175175
<SubSystem>Console</SubSystem>
@@ -192,7 +192,7 @@
192192
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
193193
</ClCompile>
194194
<Link>
195-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
195+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
196196
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
197197
<GenerateDebugInformation>true</GenerateDebugInformation>
198198
<SubSystem>Console</SubSystem>
@@ -212,7 +212,7 @@
212212
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
213213
</ClCompile>
214214
<Link>
215-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
215+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
216216
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
217217
<GenerateDebugInformation>true</GenerateDebugInformation>
218218
<SubSystem>Console</SubSystem>
@@ -237,7 +237,7 @@
237237
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
238238
</ClCompile>
239239
<Link>
240-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
240+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
241241
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
242242
<GenerateDebugInformation>true</GenerateDebugInformation>
243243
<SubSystem>Console</SubSystem>
@@ -259,7 +259,7 @@
259259
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
260260
</ClCompile>
261261
<Link>
262-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
262+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
263263
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
264264
<GenerateDebugInformation>true</GenerateDebugInformation>
265265
<SubSystem>Console</SubSystem>
@@ -282,7 +282,7 @@
282282
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
283283
</ClCompile>
284284
<Link>
285-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
285+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
286286
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
287287
<GenerateDebugInformation>true</GenerateDebugInformation>
288288
<SubSystem>Console</SubSystem>
@@ -302,7 +302,7 @@
302302
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
303303
</ClCompile>
304304
<Link>
305-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
305+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
306306
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
307307
<GenerateDebugInformation>true</GenerateDebugInformation>
308308
<SubSystem>Console</SubSystem>
@@ -327,7 +327,7 @@
327327
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
328328
</ClCompile>
329329
<Link>
330-
<AdditionalDependencies>cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
330+
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
331331
<AdditionalLibraryDirectories>../../Lib/$(Platform)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
332332
<GenerateDebugInformation>true</GenerateDebugInformation>
333333
<SubSystem>Console</SubSystem>

0 commit comments

Comments
 (0)