以下實現了c++標準模板庫中std::string中的部分實現,參考了cplusplus.
關於c++中標準模板庫std::string的介紹和用法可以參考:
實現**string.hpp如下:
#ifndef fbc_stl_string_hpp_
#define fbc_stl_string_hpp_
#include namespace fbcstd ; // class string
inline string::string()
inline string::string(const string& str)
inline string::string(const string& str, size_t pos, size_t len)
else
buffer_[size_] = '\0'; }}
inline string::string(const char* s)
inline string::string(const char* s, size_t n)
else
}inline string::string(size_t n, char c)
inline string::~string()
inline const char* string::c_str() const
inline size_t string::length() const
inline size_t string::size() const
inline char& string::operator (size_t pos)
inline const char& string::operator (size_t pos) const
inline string& string::operator = (const string& str)
inline string& string::operator = (const char* s)
inline string& string::operator = (char c)
inline string& string::operator += (const string& str)
inline string& string::operator += (const char* s)
inline string& string::operator += (char c)
inline string& string::assign(const string& str)
inline string& string::assign(const char* s)
inline char& string::at(size_t pos)
inline const char& string::at(size_t pos) const
inline void string::clear()
inline int string::compare(const string& str) const
inline int string::compare(const char* s) const
inline const char* string::data() const
inline bool string::empty() const
static inline string operator + (const string& lhs, const string& rhs)
static inline string operator + (const string& lhs, const char* rhs)
static inline string operator + (const char* lhs, const string& rhs)
static inline string operator + (const string& lhs, char rhs)
static inline string operator + (char lhs, const string& rhs)
static inline bool operator == (const string& lhs, const string& rhs)
static inline bool operator == (const char* lhs, const string& rhs)
static inline bool operator == (const string& lhs, const char* rhs)
static inline bool operator != (const string& lhs, const string& rhs)
static inline bool operator != (const char* lhs, const string& rhs)
static inline bool operator != (const string& lhs, const char* rhs)
static inline bool operator < (const string& lhs, const string& rhs)
static inline bool operator < (const char* lhs, const string& rhs)
static inline bool operator < (const string& lhs, const char* rhs)
static inline bool operator <= (const string& lhs, const string& rhs)
static inline bool operator <= (const char* lhs, const string& rhs)
static inline bool operator <= (const string& lhs, const char* rhs)
static inline bool operator > (const string& lhs, const string& rhs)
static inline bool operator > (const char* lhs, const string& rhs)
static inline bool operator > (const string& lhs, const char* rhs)
static inline bool operator >= (const string& lhs, const string& rhs)
static inline bool operator >= (const char* lhs, const string& rhs)
static inline bool operator >= (const string& lhs, const char* rhs)
} // namespace fbcstd
#endif // fbc_stl_string_hpp_
測試**test_string.cpp如下:
#include #include "string.hpp"
#define std fbcstd
int main()
// constructor
std::string str1 = "csdn: ";
std::string str2 = "";
fprintf(stdout, "str1: %s\n", str1.c_str());
std::string str3("github: ");
fprintf(stdout, "str3: %s\n", str3.c_str());
} return 0;
}
cmakelists.txt內容如下:
project(samples_stl_implementation)
cmake_minimum_required(version 3.0)
set(cmake_c_flags "$ -g -wall -o2 -std=c11")
set(cmake_cxx_flags "$ -g -wall -o2 -std=c++11")
include_directories($/src)
message(status "project source dir: $")
file(glob tests $/test/*.cpp)
foreach (test $)
string(regex match "[^/]+$" test_file $)
string(replace ".cpp" "" test_basename $)
add_executable($ $)
target_link_libraries($ pthread)
endforeach()
指令碼build.sh內容如下:
#! /bin/bash
real_path=$(realpath $0)
dir_name=`dirname "$"`
echo "real_path: $, dir_name: $"
new_dir_name=$/build
mkdir -p $
cd $
cmake ..
make
cd -
編譯及測試方法:將終端定位到samples_stl_implementation目錄下,執行:$ ./build.sh , 然後再執行$ ./build/test_string即可。
github:
c 標準庫 std string 補充類
c 標準庫中sting類 缺失了很多常用功能 比如編碼轉換,文字分割,空格去除,字元全域性替換,計算md5等功能 該類單檔案,方便使用,開袋即食 pragma once include include namespace str util int len widechartomultibyte cp...
C 中標準模板庫std vector的實現
以下實現了c 標準模板庫std vector的部分實現,參考了 cplusplus.關於c 中標準模板庫std vector的介紹和用法可以參考 實現 vector.hpp內容如下 ifndef fbc stl vector hpp define fbc stl vector hpp include...
C 中標準Dispose模式的實現
摘要 c 程式中的dispose方法,一旦被呼叫了該方法的物件,雖然還沒有垃圾 但實際上已經不能再使用了。所以使用上要仔細考慮細節。需要明確一下c 程式 或者說.net 中的資源。簡單的說來,c 中的每乙個型別都代表一種資源,而資源又分為兩類 託管資源 由clr管理分配和釋放的資源,即由clr裡ne...