在編譯器或者其它語言處理軟體的開發過程中,字串管理是非常重要的。
原子化字串可以提公升符號管理和檔名管理。
///pimpl模式宣告
class
atomsimpl;
class
atoms;
///atoms string container實現
struct
atomsimplnode;
class
atomsimpl;
atomsimpl::atomsimpl():buckets(1), atom_count(0)
atomsimpl::~atomsimpl()}}
const
char *atomsimpl::intern(const
string &s)else}}
buckets.swap(new_buckets);
}size_t
hash_val = 7, len = s.size(), hidx = 0;
while(hidxsize_t
idx = hash_val % buckets.size();
atomsimplnode *tail = null; //
tricky to reduce insert code
if (buckets[idx])
}atomsimplnode *newnode = new atomsimplnode;
newnode->len = len;
newnode->hash_val = hash_val;
newnode->next = null;
newnode->s = new
char[len+1];
strcpy(newnode->s, s.c_str());
if (tail) else
++atom_count;
return newnode->s;
}const
char *atomsimpl::intern(const
char *s)
atoms::atoms()
atoms::~atoms()
const
char * atoms::intern(const
string &s)
const
char * atoms::intern(const
char *s)
字串格式化
sprintf snprintf snprintf std stringstream std strstream boost lexical cast boost format cstring format 1 sprintf 使用 sprintf 不安全,輕則破壞資料的準確性,重則程式崩潰。請看下...
Python 文件化字串
python有乙個很奇妙的特性,稱為 文件字串 它通常被簡稱為 docstrings docstrings是乙個重要的工具,由於它幫助你的程式文件更加簡單易懂,你應該盡量使用它。你甚至可以在程式執行的時候,從函式恢復文件字串!usr bin python filename func doc.py d...
字串初始化
在c語言程式設計中,當我們宣告乙個字串陣列的時候,常常需要把它初始化為空串。總結起來有以下三種方式 1 char str 10 2 char str 10 3 char str 10 str 0 0 第 1 2 種方式是將str陣列的所有元素都初始化為 0 而第 3 種方式是只將str陣列的第乙個元...