[C語言]字符串操作小結

一究恤、字符串操作

  • strcpy(p, p1) 復制字符串
  • strncpy(p, p1, n) 復制指定長度字符串
  • strcat(p, p1) 附加字符串
  • strncat(p, p1, n) 附加指定長度字符串
  • strlen(p) 取字符串長度
  • strcmp(p, p1) 比較字符串
  • strcasecmp忽略大小寫比較字符串
  • strncmp(p, p1, n) 比較指定長度字符串
  • strchr(p, c) 在字符串中查找指定字符
  • strrchr(p, c) 在字符串中反向查找
  • strstr(p, p1) 查找字符串
  • strpbrk(p, p1) 以目標字符串的所有字符作為集合咬腕,在當前字符串查找該集合的任一元素
  • strspn(p, p1) 以目標字符串的所有字符作為集合,在當前字符串查找不屬于該集合的任一元素的偏移
  • strcspn(p, p1) 以目標字符串的所有字符作為集合遏插,在當前字符串查找屬于該集合的任一元素的偏移

具有指定長度的字符串處理函數(shù)在已處理的字符串之后填補零結尾符

二邻寿、字符串到數(shù)值類型的轉換

  • strtod(p, ppend) 從字符串 p 中轉換 double 類型數(shù)值,并將后續(xù)的字符串指針存儲到 ppend 指向的 char* 類型存儲慨代。
  • strtol(p, ppend, base) 從字符串 p 中轉換 long 類型整型數(shù)值更哄,base 顯式設置轉換的整型進制芋齿,設置為 0 以根據(jù)特定格式判斷所用進制腥寇,0x, 0X 前綴以解釋為十六進制格式整型,0 前綴以解釋為八進制格式整型
  • atoi(p) 字符串轉換到 int 整型
  • atof(p) 字符串轉換到 double 符點數(shù)
  • atol(p) 字符串轉換到 long 整型

三觅捆、字符檢查

  • isalpha() 檢查是否為字母字符
  • isupper() 檢查是否為大寫字母字符
  • islower() 檢查是否為小寫字母字符
  • isdigit() 檢查是否為數(shù)字
  • isxdigit() 檢查是否為十六進制數(shù)字表示的有效字符
  • isspace() 檢查是否為空格類型字符
  • iscntrl() 檢查是否為控制字符
  • ispunct() 檢查是否為標點符號
  • isalnum() 檢查是否為字母和數(shù)字
  • isprint() 檢查是否是可打印字符
  • isgraph() 檢查是否是圖形字符赦役,等效于 isalnum() | ispunct()

四、函數(shù)原型

  • 原型:strcpy(char destination[], const char source[]);
    功能:將字符串source拷貝到字符串destination中
    例程:

    #include <iostream.h> 
    #include <string.h> 
    void main(void) 
    {        
      char str1[10] = { "TsinghuaOK"}; 
      char str2[10] = { "Computer"}; 
      cout <<strcpy(str1,str2)<<endl; 
    }
    

運行結果是:Computer
第二個字符串將覆蓋掉第一個字符串的所有內容栅炒!
注意:在定義數(shù)組時扩劝,字符數(shù)組1的字符串長度必須大于或等于字符串2的字符串長度。不能用賦值語句將一個字符串常量或字符數(shù)組直接賦給一個字符數(shù)組职辅。所有字符串處理函數(shù)都包含在頭文件string.h中棒呛。

  • strncpy(char destination[], const char source[], int numchars);
    原型:strncpy(char destination[], const char source[], int numchars);
    功能:將字符串source中前numchars個字符拷貝到字符串destination中
    例程:
#include <iostream.h> 
#include <string.h> 
void main(void) 
{ 
    char str1[10] = { "Tsinghua "};
    char str2[10] = { "Computer"}; 
    cout <<strncpy(str1,str2,3)<<endl; 
}

運行結果:Comnghua
注意:字符串source中前numchars個字符將覆蓋掉字符串destination中前numchars個字符!

  • 原型:strcat(char target[], const char source[]);
    功能:將字符串source接到字符串target的后面
    例程:

include <iostream.h>

include <string.h>

void main(void)
{
  char str1[] = { "Tsinghua "};
  char str2[] = { "Computer"};
  cout <<strcpy(str1,str2)<<endl;
}
運行結果:Tsinghua Computer
注意:在定義字符數(shù)組1的長度時應該考慮字符數(shù)組2的長度域携,因為連接后新字符串的長度為兩個字符串長度之和簇秒。進行字符串連接后,字符串1的結尾符將自動被去掉秀鞭,在結尾串末尾保留新字符串后面一個結尾符趋观。

  • 原型:strncat(char target[], const char source[], int numchars);
    功能:將字符串source的前numchars個字符接到字符串target的后面
    例程:

include <iostream.h>

include <string.h>

void main(void)
{
  char str1[] = { "Tsinghua "};
  char str2[] = { "Computer"};
  cout <<strncat(str1,str2,3)<<endl;
}
運行結果:Tsinghua Com

原型:int strcmp(const char firststring[], const char secondstring);
功能:比較兩個字符串firststring和secondstring
例程:

include <iostream.h>

include <string.h>

void main(void)
{
  char buf1[] = "aaa";
  char buf2[] = "bbb";
  char buf3[] = "ccc";
  int ptr;
  ptr = strcmp(buf2,buf1);
  if(ptr > 0)
   cout <<"Buffer 2 is greater than buffer 1"<<endl;
  else
   cout <<"Buffer 2 is less than buffer 1"<<endl;
  ptr = strcmp(buf2,buf3);
  if(ptr > 0)
   cout <<"Buffer 2 is greater than buffer 3"<<endl;
  else
   cout <<"Buffer 2 is less than buffer 3"<<endl;
}
運行結果是:Buffer 2 is less than buffer 1
Buffer 2 is greater than buffer 3

原型:strlen( const char string[] );
功能:統(tǒng)計字符串string中字符的個數(shù)
例程:

include <iostream.h>

include <string.h>

void main(void)
{
char str[100];
cout <<"請輸入一個字符串:";
cin >>str;
cout <<"The length of the string is :"<<strlen(str)<<"個"<<endl;
}
運行結果The length of the string is x (x為你輸入的字符總數(shù)字)
注意:strlen函數(shù)的功能是計算字符串的實際長度,不包括'\0'在內锋边。另外皱坛,strlen函數(shù)也可以直接測試字符串常量的長度,如:strlen("Welcome")豆巨。

void *memset(void *dest, int c, size_t count);
將dest前面count個字符置為字符c. 返回dest的值.
void *memmove(void *dest, const void *src, size_t count);
從src復制count字節(jié)的字符到dest. 如果src和dest出現(xiàn)重疊, 函數(shù)會自動處理. 返回dest的值.
void *memcpy(void *dest, const void *src, size_t count);
從src復制count字節(jié)的字符到dest. 與memmove功能一樣, 只是不能處理src和dest出現(xiàn)重疊. 返回dest的值.
void *memchr(const void *buf, int c, size_t count);
在buf前面count字節(jié)中查找首次出現(xiàn)字符c的位置. 找到了字符c或者已經(jīng)搜尋了count個字節(jié), 查找即停止. 操作成功則返回buf中首次出現(xiàn)c的位置指針, 否則返回NULL.
void *_memccpy(void *dest, const void *src, int c, size_t count);
從src復制0個或多個字節(jié)的字符到dest. 當字符c被復制或者count個字符被復制時, 復制停止.
如果字符c被復制, 函數(shù)返回這個字符后面緊挨一個字符位置的指針. 否則返回NULL.
int memcmp(const void *buf1, const void *buf2, size_t count);
比較buf1和buf2前面count個字節(jié)大小.
返回值< 0, 表示buf1小于buf2;
返回值為0, 表示buf1等于buf2;
返回值> 0, 表示buf1大于buf2.
int memicmp(const void *buf1, const void *buf2, size_t count);
比較buf1和buf2前面count個字節(jié). 與memcmp不同的是, 它不區(qū)分大小寫.
返回值同上.
char *strrev(char *string);
將字符串string中的字符順序顛倒過來. NULL結束符位置不變. 返回調整后的字符串的指針.
char *_strupr(char *string);
將string中所有小寫字母替換成相應的大寫字母, 其它字符保持不變. 返回調整后的字符串的指針.
char *_strlwr(char *string);
將string中所有大寫字母替換成相應的小寫字母, 其它字符保持不變. 返回調整后的字符串的指針.
char *strchr(const char *string, int c);
查找字 串string中首次出現(xiàn)的位置, NULL結束符也包含在查找中. 返回一個指針, 指向字符c在字符串string中首次出現(xiàn)的位置, 如果沒有找到, 則返回NULL.
char *strrchr(const char *string, int c);
查找字符c在字符串string中最后一次出現(xiàn)的位置, 也就是對string進行反序搜索, 包含NULL結束符.
返回一個指針, 指向字符c在字符串string中最后一次出現(xiàn)的位置, 如果沒有找到, 則返回NULL.
char *strstr(const char *string, const char *strSearch);
在字符串string中查找strSearch子串. 返回子串strSearch在string中首次出現(xiàn)位置的指針. 如果沒有找到子串strSearch, 則返回NULL. 如果子串strSearch為空串, 函數(shù)返回string值.
char *strdup(const char *strSource);
函數(shù)運行中會自己調用malloc函數(shù)為復制strSource字符串分配存儲空間, 然后再將strSource復制到分配到的空間中. 注意要及時釋放這個分配的空間.
返回一個指針, 指向為復制字符串分配的空間; 如果分配空間失敗, 則返回NULL值.
char *strcat(char *strDestination, const char *strSource);
將源串strSource添加到目標串strDestination后面, 并在得到的新串后面加上NULL結束符. 源串strSource的字符會覆蓋目標串strDestination后面的結束符NULL. 在字符串的復制或添加過程中沒有溢出檢查, 所以要保證目標串空間足夠大. 不能處理源串與目標串重疊的情況. 函數(shù)返回strDestination值.
char *strncat(char *strDestination, const char *strSource, size_t count);
將源串strSource開始的count個字符添加到目標串strDest后. 源串strSource的字符會覆蓋目標串strDestination后面的結束符NULL. 如果count大于源串長度, 則會用源串的長度值替換count值. 得到的新串后面會自動加上NULL結束符. 與strcat函數(shù)一樣, 本函數(shù)不能處理源串與目標串重疊的情況. 函數(shù)返回strDestination值.
char *strcpy(char *strDestination, const char *strSource);
復制源串strSource到目標串strDestination所指定的位置, 包含NULL結束符. 不能處理源串與目標串重疊的情況.函數(shù)返回strDestination值.
char *strncpy(char *strDestination, const char *strSource, size_t count);
將源串strSource開始的count個字符復制到目標串strDestination所指定的位置. 如果count值小于或等于strSource串的長度, 不會自動添加NULL結束符目標串中, 而count大于strSource串的長度時, 則將strSource用NULL結束符填充補齊count個字符, 復制到目標串中. 不能處理源串與目標串重疊的情況.函數(shù)返回strDestination值.
char *strset(char *string, int c);
將string串的所有字符設置為字符c, 遇到NULL結束符停止. 函數(shù)返回內容調整后的string指針.
char *strnset(char *string, int c, size_t count);
將string串開始count個字符設置為字符c, 如果count值大于string串的長度, 將用string的長度替換count值. 函數(shù)返回內容調整后的string指針.
size_t strspn(const char *string, const char *strCharSet);
查找任何一個不包含在strCharSet串中的字符 (字符串結束符NULL除外) 在string串中首次出現(xiàn)的位置序號. 返回一個整數(shù)值, 指定在string中全部由characters中的字符組成的子串的長度. 如果string以一個不包含在strCharSet中的字符開頭, 函數(shù)將返回0值.
size_t strcspn(const char *string, const char *strCharSet);
查找strCharSet串中任何一個字符在string串中首次出現(xiàn)的位置序號, 包含字符串結束符NULL.
返回一個整數(shù)值, 指定在string中全部由非characters中的字符組成的子串的長度. 如果string以一個包含在strCharSet中的字符開頭, 函數(shù)將返回0值.
char *strspnp(const char *string, const char *strCharSet);
查找任何一個不包含在strCharSet串中的字符 (字符串結束符NULL除外) 在string串中首次出現(xiàn)的位置指針. 返回一個指針, 指向非strCharSet中的字符在string中首次出現(xiàn)的位置.
char *strpbrk(const char *string, const char *strCharSet);
查找strCharSet串中任何一個字符在string串中首次出現(xiàn)的位置, 不包含字符串結束符NULL.
返回一個指針, 指向strCharSet中任一字符在string中首次出現(xiàn)的位置. 如果兩個字符串參數(shù)不含相同字符, 則返回NULL值.
int strcmp(const char *string1, const char *string2);
比較字符串string1和string2大小.
返回值< 0, 表示string1小于string2;
返回值為0, 表示string1等于string2;
返回值> 0, 表示string1大于string2.
int stricmp(const char *string1, const char *string2);
比較字符串string1和string2大小剩辟,和strcmp不同, 比較的是它們的小寫字母版本.返回值與strcmp相同.
int strcmpi(const char *string1, const char *string2);
等價于stricmp函數(shù), 只是提供一個向后兼容的版本.
int strncmp(const char *string1, const char *string2, size_t count);
比較字符串string1和string2大小,只比較前面count個字符. 比較過程中, 任何一個字符串的長度小于count, 則count將被較短的字符串的長度取代. 此時如果兩串前面的字符都相等, 則較短的串要小.
返回值< 0, 表示string1的子串小于string2的子串;
返回值為0, 表示string1的子串等于string2的子串;
返回值> 0, 表示string1的子串大于string2的子串.
int strnicmp(const char *string1, const char *string2, size_t count);
比較字符串string1和string2大小往扔,只比較前面count個字符. 與strncmp不同的是, 比較的是它們的小寫字母版本. 返回值與strncmp相同.
char *strtok(char *strToken, const char *strDelimit);
在strToken 串中查找下一個標記, strDelimit字符集則指定了在當前查找調用中可能遇到的分界符. 返回一個指針, 指向在strToken中找到的下一個標記. 如果找不到標記, 就返回NULL值. 每次調用都會修改strToken內容, 用NULL字符替換遇到的每個分界符.
c++概念字符串操作
一贩猎、char_traits 字符特征類
1)意義:包裝特定串元素的通用行為界面,以便容器實現(xiàn)時依據(jù)特征信息而執(zhí)行特定行為
2)定義了通用類型名
typedef _Elem char_type;
typedef int int_type;
typedef streampos pos_type;
typedef streamoff off_type;
typedef mbstate_t state_type;
其中 int_type 表示字符元素轉換到特定編碼時的整型表示萍膛,pos_type, off_type 分別作為字符串索引和字符串元素偏移的類型吭服,類似容器迭中的指針,迭代類型和指針蝗罗,迭代器的偏移類型艇棕。最后的 state_type 用于存儲流狀態(tài),如出錯串塑,格式控制等等沼琉。
3)定義了字符 / 字符串操作的包裝界面,以便通用算法的調用
assign(a, b) 定義將 b 字符賦值給 a 字符的過程拟赊,實現(xiàn) a.operator = 的行為
eq(a, b) 定義 a 字符和 b 字符的相等關系刺桃,實現(xiàn) a.operator == 的行為
lt(a, b) 定義 a 小于 b 的關系粹淋,實現(xiàn) a.operator < 的行為
compare(a_ptr, b_ptr, cnt) 定義兩組字符串的比較吸祟,返回 int 類型瑟慈,實現(xiàn)類似 memcmp 的行為
length(ptr) 定義取字符串長度,實現(xiàn)類似 strlen 的行為
copy(a_ptr, b_ptr, cnt) 定義兩組字符串的復制屋匕,實現(xiàn)類似 memcpy 的行為
move(a_ptr, b_ptr, cnt) 定義兩組字符串的不重疊復制葛碧,實現(xiàn)類似 memmove 的行為
assign(ptr, cnt, ch) 定義了填充字符串的過程,實現(xiàn)類似 memset 的行為
to_int_type(ch) 定義了 char_type 到 int_type 整型的轉換過程
to_char_type(n) 定義了 int_type 到 char_type 字符型的轉換過程
eq_int_type(a, b) 定義兩個和當前 char_type 類型對應的 int_type 的相等關系
eof() 定義字符串結尾符过吻,使用整型表示
not_eof(n) 定義非字符串結尾符进泼,若輸入結尾符,則返回 1纤虽,其他輸入返回原值乳绕,即總是不返回 eof()
4)int_type 類型應是當前字符類型的整型編碼
二、std::string 并不是序列容器逼纸,沒有 front() 和 back() 界面用于取出前端和尾端的元素洋措,使用 std::string::operator [] 并傳遞 streampos 類型取得特定元素,如 std::string::size() - 1 作為索引取得最后一個字符

三杰刽、basic_string 支持的初始化
1)默認初始化
2)分配器
3)復制構造
4)局部復制 [_Roff, _Roff + _Count)
5)局部復制 + 分配器
6)C 字符串 [_Ptr, <null>)
7)C 字符串 + _Count [_Ptr, _Ptr + _Count)
8)C 字符串 + 分配器
9)C 字符串 + _Count + 分配器 [_Ptr, _Ptr + _Count)
10)_Count * _Ch
11)_Count * _Ch + 分配器
12)迭代器 [_ItF, _ItL)
13)迭代器 + 分配器
字符到串不能初始化菠发,但支持 operator = 賦值和 operator += 累加賦值運算。
四贺嫂、字符串的區(qū)間有效性
對串的索引訪問在超過字符串的有效區(qū)間時滓鸠,因為串的在實現(xiàn)上對內置的字符緩沖區(qū)執(zhí)行下標訪問,所以不會導致異常第喳,但是將得到不可預知的結果糜俗,通常是不可用的。
將其他字符串作為右值輸入時曲饱,對該串取出計數(shù)大于串大小時按串大小計算吩跋。
std::basic_string::size_type 的實際類型為 size_t,在 Visual C++ 7.1 中實現(xiàn)為 unsigned渔工,std::basic_string::npos 被靜態(tài)設定為
(basic_string<_Elem, _Traits, _Alloc>::size_type)(-1);
在查找子字符串等操作時锌钮,函數(shù)返回 npos 的值表示非法索引。

五引矩、比較字符串
允許的比較對象
1)compare(s2) 其他同類型字符串
2)compare(p) C 風格字符串
3)compare(off, cnt, s2) [off, off + cnt) 同 s2 執(zhí)行比較
4)compare(off, cnt, s2, off2, cnt2) [off, off + cnt) 同 s2 [off2, cnt2) 執(zhí)行比較
5)compare(off, cnt, p) [off, off + cnt) 同 [p , <null>) 執(zhí)行比較
6)compare(off, cnt, p, cnt2) [off, off + cnt) 同 [p, p + cnt2) 執(zhí)行比較
返回 -1, 0, 1 作為小于梁丘、等于和大于的比較結果。
六旺韭、附加數(shù)據(jù)
1)使用 operator += 接受其他字符串氛谜,C 風格字符串和字符
2)使用 push_back() 在尾部附加字符,并使得通過字符串構造的 back_iterator 可以訪問
3)append() 附加
1区端、append(s) 追加字符串
2值漫、append(s, off, cnt) 追加字符串 s [off, off + cnt)
3、append(p) 追加字符串 [p, <null>)
4织盼、append(p, cnt) 追加字符串 [p, p + cnt)
5杨何、append(n, c) 填充 n * c
6酱塔、append(InF, InL) 追加輸入流 [InF, InL)
4)insert() 插入
1、insert(off, s2) 插入字符串
2危虱、insert(off, s2, off2, cnt2) 插入字符串 s [off2, off2 + cnt2)
3羊娃、insert(off, p) 插入字符串 [p, <null>)
4、insert(off, p, cnt) 插入字符串 [p, p + cnt)
5埃跷、insert(off, n, c) 插入 n * c
6蕊玷、insert(iter) 元素默認值填充
7、insert(iter, c) 插入特定元素
8弥雹、insert(iter, n, c) 插入 n*c
9垃帅、insert(iter, InF, InL) 插入 [InF, InL)
5)operator +(a, b)
字符串關聯(lián)運算符重載中支持 operator + 的形式
1、s + s
2剪勿、s + p
3挺智、s + c
4、p + s
5窗宦、c + s
七赦颇、查找、替換和清除
1)find() 查找
1赴涵、find(c, off) 在 s [off, npos) 中查找 c
2媒怯、find(p, off, n) 在 s [off, npos) 中查找 [p, p + n)
3、find(p, off) 在 s [off, npos) 中查找 [p, <null>)
4髓窜、find(s2, off) 在 s [off, npos) 中查找 s2
2)find() 的變種
1扇苞、rfind() 具有 find() 的輸入形式,反序查找
2寄纵、find_first_of() 具有 find() 的輸入形式鳖敷,返回第一個匹配的索引
3、find_last_of() 具有 find() 的輸入形式程拭,返回倒數(shù)第一個匹配的索引
4定踱、find_first_not_of() 具有 find() 的輸入形式,返回第一個不匹配的索引
5恃鞋、find_last_not_of() 具有 find() 的輸入形式崖媚,返回倒數(shù)第一個不匹配的索引
3)replace() 替換
1、replace(off, cnt, s2) 將 s [off, off + cnt) 替換成 s2
2恤浪、replace(off, cnt, s2, off2, cnt2) 將 s [off, off + cnt) 替換成 s2 [off2, off2 + cnt2)
3畅哑、replace(off, cnt, p) 將 s [off, off + cnt) 替換成 [p, <null>)
4、replace(off, cnt, p, cnt2) 將 s [off, off + cnt) 替換成 [p, p + cnt2)
5水由、replace(off, cnt, n, c) 將 s [off, off + cnt) 替換成 c * n
使用迭代器的情況:
6荠呐、replace(InF, InL, s2) 將 [InF, InL) 替換成 s2
7、replace(InF, InL, p) 將 [InF, InL) 替換成 [p, <null>)
8、replace(InF, InL, p, cnt) 將 [InF, InL) 替換成 [p, p + cnt)
9泥张、replace(InF, InL, n, c) 將 [InF, InL) 替換成 n * c
10呵恢、replace(InF, InL, InF2, InL2) 將 [InF, InL) 替換成 [InF2, InL2)
4)erase() 刪除
1、erase(off, cnt) 從字符串 s 中刪除 s [off, off + cnt)
2圾结、erase(iter) 從字符串 s 中刪除 *iter
3、erase(ItF, ItL) 從字符串 s 中刪除 [ItF, ItL)
八齿诉、取出字符串
1)取得 C 風格字符串
c_str() 返回常量類型的 C 風格字符串指針筝野,copy(ptr, cnt, off = 0) 則將指定大小的字符串復制到特定指針。data() 在 Visual C++ 7.1 中僅僅調用了 c_str() 實現(xiàn)粤剧。
2)取得子字符串
substr(off, cnt) 取得 s [off, off + cnt) 的副本歇竟。
3)復制子字符串
copy(p, off, cnt) 將 s [off, off + cnt) 復制到 p。

九抵恋、字符串的緩沖區(qū)管理
字符串具有類似 std::vector 的緩沖區(qū)管理界面焕议。
size() 取得有效元素長度
max_size() 取得當前內存分配器能分配的有效空間
reserve() 為緩沖區(qū)預留空間
capacity() 取得緩沖區(qū)的容量
resize() 重設串的長度,可以為其指定初始化值
十弧关、定義輸入迭代器的尾端
向 istream_iterator 傳遞輸入流對象以創(chuàng)建輸入迭代器盅安,輸入迭代器持有輸入流對象的指針,默認創(chuàng)建和讀取流失敗的情況下該指針被設置為 0世囊。并且在實現(xiàn)輸入迭代器間的 operator == 相等運算時别瞭,進行持有的流對象指針的相等比較,這樣株憾,默認創(chuàng)建的輸入迭代器將被用于匹配輸入流的結束蝙寨。

  • 當輸入流讀取失敗,用戶執(zhí)行 if, while 條件判斷時嗤瞎,實際上先將判斷值轉換成 void* 類型墙歪,或者根據(jù) operator ! 運算符的返回結果,對輸入流重載 operator void* 和 operator ! 運算符贝奇,可以定義輸入流在布爾表達式中的行為虹菲,使得當流讀取失敗的情況下,輸入迭代器可以通過布爾表達式來確認掉瞳,而不是顯式訪問 fail() 成員函數(shù).
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末届惋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子菠赚,更是在濱河造成了極大的恐慌脑豹,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衡查,死亡現(xiàn)場離奇詭異瘩欺,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門俱饿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歌粥,“玉大人,你說我怎么就攤上這事拍埠∈唬” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵枣购,是天一觀的道長嬉探。 經(jīng)常有香客問我,道長棉圈,這世上最難降的妖魔是什么薄霜? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任剪廉,我火速辦了婚禮胁澳,結果婚禮上紊婉,老公的妹妹穿的比我還像新娘。我一直安慰自己德召,他們只是感情好白魂,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著上岗,像睡著了一般碧聪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上液茎,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天逞姿,我揣著相機與錄音,去河邊找鬼捆等。 笑死滞造,一個胖子當著我的面吹牛,可吹牛的內容都是我干的栋烤。 我是一名探鬼主播谒养,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼明郭!你這毒婦竟也來了买窟?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤薯定,失蹤者是張志新(化名)和其女友劉穎始绍,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體话侄,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡亏推,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年学赛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吞杭。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡盏浇,死狀恐怖,靈堂內的尸體忽然破棺而出芽狗,到底是詐尸還是另有隱情绢掰,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布童擎,位于F島的核電站滴劲,受9級特大地震影響,放射性物質發(fā)生泄漏柔昼。R本人自食惡果不足惜哑芹,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一炎辨、第九天 我趴在偏房一處隱蔽的房頂上張望捕透。 院中可真熱鬧,春花似錦碴萧、人聲如沸乙嘀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虎谢。三九已至,卻和暖如春曹质,著一層夾襖步出監(jiān)牢的瞬間婴噩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工羽德, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留几莽,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓宅静,卻偏偏與公主長得像章蚣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子姨夹,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內容

  • 本文轉自:http://www.cnblogs.com/lidabo/p/5225868.html 1)字符串操作...
    XiaohuiLI閱讀 9,521評論 0 0
  • 在c語言中纤垂,字符串是用字符數(shù)組來存儲的(并不像c++或者java等語言中有單獨的string類型), 存放時在字符...
    朱森閱讀 1,567評論 0 2
  • C/C++輸入輸出流總結 前兩天寫C++實習作業(yè)磷账,突然發(fā)現(xiàn)I/O是那么的陌生峭沦,打了好長時間的文件都沒有打開,今天終...
    LuckTime閱讀 1,733評論 0 6
  • “安風——” 她猛的抬起頭逃糟。 “安風——” 耳邊又響起那個聲音熙侍,眼前一瞬間場景變換,整個世界被白光侵蝕,逐漸有一點...
    扶曦閱讀 414評論 0 0
  • 在高中前感覺自己在學校也屬于佼佼者蛉抓,市級賽和專業(yè)老師的贊賞庆尘、運動會的前六名、元旦晚會的第二名巷送。 大學后遇到了很多多...
    98少年閱讀 188評論 2 0