精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

當C++遇到iOS應用開發:字符串處理篇

移動開發 iOS
X-Code提供了自動配對“[]”號的功能,但一閱讀起源代碼后依舊讓人心生厭惡。給人一種“強迫打字綜合癥”的感覺。所以我在NSMutableString基礎上用C++進行了封裝,特別是對于一些常用方法的使用,在使用時會非常方便,與C#沒太大差別。

在 Object-c中,字符串處理通常使用NSString,NSMutableString這兩個類,前者用于定長字符串,后者用于可變長度字符串的操 作。盡量其提供的方法很豐富,但一用起來后就讓人感到很難受,比如其超長的方法名稱(如 stringByReplacingPercentEscapesUsingEncoding),再加上嵌套“[]”式的調用方式,讓人很快就會產生" []"匹配綜合癥。

即使X Code提供了自動配對“[]”號的功能,但一閱讀起源代碼后依舊讓人心生厭惡。給人一種“強迫打字綜合癥”的感覺。所以我在NSMutableString基礎上用C++進行了封裝,特別是對于一些常用方法的使用,在使用時會非常方便,與C#沒太大差別。

首先看一下String類的源碼(說明:因為C++中有std::string這個類,為了與其區別,這里使用了首字母大寫)。

  1. #import "RegexKitLite.h" 
  2. #define RELEASE_SAFELY(__POINTER) { [__POINTER release]; __POINTER = nil; } 
  3. class String { 
  4. private
  5. NSMutableString *temp; 
  6. static inline NSMutableString* ToMutableString(NSString *str){ 
  7. return [[NSMutableString stringWithString:(NSString *)str] autorelease]; 
  8. public : 
  9. String(){ 
  10. temp = ToMutableString(@""); 
  11. String(NSString *str){ 
  12. temp = ToMutableString(str); 
  13. String(int value){ 
  14. temp = ToMutableString([NSString stringWithFormat:@"%d", value]); 
  15. String(float value){ 
  16. temp = ToMutableString([NSString stringWithFormat:@"%f", value]); 
  17. String(std::string str){ 
  18. temp = ToMutableString(toNSString(str)); 
  19. String(const char* str){ 
  20. temp = ToMutableString(toNSString(str)); 
  21. ~String(){ 
  22. RELEASE_SAFELY(temp); 
  23. NSString * toString(){ 
  24. return temp; 
  25. const std::string toStdString(){ 
  26. return [temp UTF8String]; 
  27. NSString * toLower(){ 
  28. return [temp lowercaseString]; 
  29. NSString* toUpper(){ 
  30. return [temp uppercaseString]; 
  31. int length(){ 
  32. return temp.length; 
  33. bool contains(NSString *search){ 
  34. return [temp rangeOfString:search].location != NSNotFound; 
  35. //不考慮大小寫 
  36. static BOOL stringEquals(NSString* str1, NSString* str2) 
  37. if ( str1 == nil || str2 == nil ) { 
  38. return NO; 
  39. return [str1 compare:str2 options:NSCaseInsensitiveSearch] == NSOrderedSame; 
  40. //區分大小寫 
  41. static BOOL caseEquals(NSString* str1, NSString* str2) 
  42. return (str1 == nil || str2 == nil) ? NO : [str1 isEqualToString:str2]; 
  43. bool operator==( NSString *str) 
  44. return caseEquals(this->toString(), str); 
  45. bool operator==( String *str) 
  46. return caseEquals(this->toString(), str->toString()); 
  47. //區分大小寫 
  48. BOOL startWith(NSString *prefix){ 
  49. if ( temp != nil && prefix != nil ){ 
  50. if ( prefix.length > temp.length ) { 
  51. return NO; 
  52. if ([temp hasPrefix:prefix]){ 
  53. return YES; 
  54. return NO; 
  55. //區分大小寫 
  56. BOOL endWith(NSString* suffix){ 
  57. if ( temp != nil && suffix != nil ){ 
  58. if ( [suffix length] > [temp length] ) { 
  59. return NO; 
  60. if ([temp hasSuffix:suffix]){ 
  61. return YES; 
  62. return NO; 
  63. String& operator=( NSString *str) 
  64. temp = ToMutableString(str); 
  65. return (*this); 
  66. String& operator=( std::string str) 
  67. temp = ToMutableString(toNSString(str)); 
  68. return (*this); 
  69. String& operator=( Json::Value value) 
  70. temp = ToMutableString(toNSString(value.asString())); 
  71. return (*this); 
  72. //不區別大小寫 
  73. BOOL isURL(){ 
  74. if ( [temp length] > 6 ) { 
  75. NSString* prefix = [temp substringToIndex:6]; 
  76. if (stringEquals(prefix, @"http:/") || stringEquals(prefix, @"https:") ) { 
  77. return YES; 
  78. else if (stringEquals(prefix, @"local:")){ 
  79. return YES; 
  80. if (startWith(@"/")){ 
  81. return YES; 
  82. return NO; 
  83. int toInt(){ 
  84. return [temp intValue]; 
  85. int toFloat(){ 
  86. return [temp floatValue]; 
  87. NSDate* toDate(NSString* fmt){ 
  88. return stringToDate(temp, fmt); 
  89. NSArray* split(NSString *schar){ 
  90. return [temp componentsSeparatedByString:schar]; 
  91. String& trim(){ 
  92. temp = ToMutableString([temp stringByTrimmingCharactersInSet:                                                          [NSCharacterSet whitespaceAndNewlineCharacterSet]]); 
  93. return (*this); 
  94. String& append(NSString *appstr){ 
  95. [temp appendString:appstr]; 
  96. return *this
  97. BOOL isEmpty(){ 
  98. return temp == nil || [temp length] == 0; 
  99. String& appendFormat(NSString* formatStr, ...){ 
  100. va_list arglist; 
  101. va_start(arglist, formatStr); 
  102. id statement = [[NSString alloc] initWithFormat:formatStr arguments:arglist]; 
  103. va_end(arglist); 
  104. [temp appendString:statement]; 
  105. [statement release]; 
  106. return *this
  107. String& replace(NSString *oldStr, NSString *newStr){ 
  108. [temp replaceOccurrencesOfString:oldStr 
  109. withString:newStr 
  110. options:0 range:NSMakeRange(0, [temp length])]; 
  111. return *this
  112. String& regexReplace(NSString *regex, NSString *newStr){ 
  113. NSString *tempstr = temp; 
  114. temp = ToMutableString([tempstr stringByReplacingOccurrencesOfRegex:regex withString:newStr]); 
  115. return *this
  116. NSArray* regexMatchs(NSString *regex){ 
  117. return [temp componentsMatchedByRegex:regex]; 
  118. NSArray* regexMatchs(NSString *regex, int capture){ 
  119. return [temp componentsMatchedByRegex:regex capture:capture]; 
  120. BOOL regexIsMatch(NSString *regex){ 
  121. return [temp isMatchedByRegex:regex]; 
  122. NSString * encodeUrl(){ 
  123. NSString *resultStr = temp; 
  124. CFStringRef originalString = (CFStringRef) temp; 
  125. CFStringRef leaveUnescaped = CFSTR(" "); 
  126. CFStringRef forceEscaped = CFSTR("!*'();:@&=+$,/?%#[]"); 
  127. CFStringRef escapedStr; 
  128. escapedStr = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 
  129. originalString, 
  130. leaveUnescaped, 
  131. forceEscaped, 
  132. kCFStringEncodingUTF8); 
  133. if(escapedStr) 
  134. NSMutableString *mutableStr = [NSMutableString stringWithString:(NSString *)escapedStr]; 
  135. CFRelease(escapedStr); 
  136. if (!mutableStr || [mutableStr isKindOfClass:[NSNull class]] || mutableStr.length <= 0) { 
  137. return resultStr; 
  138. // replace spaces with plusses 
  139. [mutableStr replaceOccurrencesOfString:@" " 
  140. withString:@"%20" 
  141. options:0 
  142. range:NSMakeRange(0, [mutableStr length])]; 
  143. resultStr = mutableStr; 
  144. return resultStr; 
  145. NSString * decodeUrl(){ 
  146. return [temp stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
  147. NSString * toGBK(){ 
  148. NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); 
  149. NSData *data = [temp dataUsingEncoding:NSUTF8StringEncoding]; 
  150. return [[[NSString alloc] initWithData:data encoding:enc] autorelease]; 
  151. NSString * toUTF8(){ 
  152. return [DZUtils urlEncode:temp stringEncode:NSUTF8StringEncoding]; 
  153. NSData * toNSData(){ 
  154. return [temp dataUsingEncoding:NSUTF8StringEncoding]; 
  155. NSString* subString(int start/*start from 0*/int count){ 
  156. if(start + count <= temp.length) 
  157. return [temp substringWithRange:NSMakeRange(start, count)]; 
  158. return nil; 
  159. NSString* subString(int count){ 
  160. if(count <= temp.length) 
  161. return [temp substringToIndex: count]; 
  162. return nil; 
  163. static NSDate* stringToDate(NSString * string,  NSString* fmt){ 
  164. NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
  165. [formatter setTimeZone:[NSTimeZone defaultTimeZone]]; 
  166. NSString* format = fmt == nil ? @"yyyy-MM-dd'T'HH:mm:ss'Z'" : fmt; 
  167. [formatter setDateFormat:format]; 
  168. NSDate *date = [formatter dateFromString:string]; 
  169. [formatter release]; 
  170. return date; 
  171. static NSString* dateToString(NSDate* date, NSString* fmt){ 
  172. NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
  173. [formatter setTimeZone:[NSTimeZone defaultTimeZone]]; 
  174. NSString* format = fmt == nil ? @"yyyy-MM-dd'T'HH:mm:ss'Z'" : fmt; 
  175. [formatter setDateFormat:format]; 
  176. NSString* dateStr = [formatter stringFromDate:date]; 
  177. [formatter release]; 
  178. return dateStr; 
  179. static NSString* format(NSString* formatStr, ...){ 
  180. va_list arglist; 
  181. va_start(arglist, formatStr); 
  182. id statement = [[[NSString alloc]  initWithFormat:formatStr arguments:arglist] autorelease]; 
  183. va_end(arglist); 
  184. return statement; 
  185. static NSString* toNSString(std::string str){ 
  186. return toNSString(str.c_str()); 
  187. static NSString* toNSString(const char* str){ 
  188. return [NSString stringWithUTF8String:str]; 
  189. static NSString* toNSString(Json::Value value){ 
  190. return toNSString(value.asString()); 
  191. static String Create(Json::Value value){ 
  192. String str(toNSString(value)); 
  193. return str; 
  194. }; 

從源碼中可以 看出,為了支持正則式,這里使用了RegexKitLite庫,網上有不少網友問為什么使用這個H文件時,如果.m文件改成支持C++的.mm后綴之后, 會造編譯錯誤('capture Count'was not declared in this scope),導致程序運行不起來。而網友的解決方法就是不使用.MM后綴文件。但經過分析我發現是BLOCK塊語法導致編譯錯誤的,在經過不斷嘗試之 后,發現只要修改該頭文件中的如下宏定義,就可以將該頭文件包含在MM文件中了:

#if !defined(RKL_BLOCKS) && defined(NS_BLOCKS_AVAILABLE) && (NS_BLOCKS_AVAILABLE == 1)

#define RKL_BLOCKS 1   //此處需要從1改為0

#endif

另外上面的String類的實現中,方法名稱主要是參考C#中的字符串處理類的名稱。所以可以很方法的使用。

NSString *test1 = @"imgOnLoad";

NSString *test2 = @"  trim test  ";

String s(test1);

test1 = s.trim().toUpper();

比如下面將字符串轉小寫并TRIM掉首尾空格:

NSString *test1 = @"imgOnLoad";

NSString *test2 = @"  trim test  ";

String s(test1);

test1 = s.trim().toUpper();

判斷字符串是否以指定內容開始或結束時:

BOOL result = s.startWith(@"imga");

result = s.endWith(@"load");

也可以直接將NSString*賦值給String實例

s = test2;

獲取字符串長度

int i = s.length();

字符串格式化及綁定:

String s1(123);

s1 = String::format(@"%@daizhj%@", @"diaoyudao", @"123");

String ss = String::format(@"http://%@www.sina.com.cn%@/ http", @"1", @"hello");

字符串替換:

test2 = s.replace(@"http", @"ddz").replace(@"sina", @"163").toString();

以及在C#開發中學中的StringBuilder類的appendFormat方法,這里也有相關方法對應:

test2 = s.appendFormat(@"%@daizhj%@", @"diaoyudao", @"123")

.appendFormat(@"%@fffffff%@", @"dddddd", @"123")

.appendFormat(@"%@aaaa%@", @"vvvvvv", @"123").toString();

截取子串:

test2 = s.subString(2, 10);

test2 = s.subString(10);

查找字符是否存在:

BOOL search = s.contains(@"dadddd");

除此以外,還有正則替換查找,url地址的編解碼,以及String對象轉換成其它不同類型如date, int, float等。

責任編輯:閆佳明 來源: oschina
相關推薦

2013-05-02 13:06:05

C++遇到iOS應用開SQLITE

2010-02-01 16:46:07

C++格式化字符串

2021-09-07 09:23:07

C++字符串算法

2010-02-02 11:27:16

C++字符串

2017-12-07 16:08:47

數據優化HTML字符串

2010-11-26 09:51:54

MySQL字符串

2021-07-30 06:22:37

C++字符型字符串

2010-02-04 17:39:48

C++字符串類型

2010-02-04 17:32:43

C++中C風格字符串

2014-04-14 10:21:15

開發運維DevOps

2009-09-02 15:53:27

C#判斷字符串應用

2016-12-30 13:32:24

字符串算法代碼

2023-12-11 15:18:03

C++字符串Unicode

2010-02-02 18:01:47

C++字符串替換函數

2009-09-01 17:50:23

C#截取字符串

2021-08-20 06:58:31

C++Python函數

2025-02-21 12:30:00

字符串前端JavaScript

2010-02-04 10:52:36

C++字符串分割函數

2024-03-11 06:05:00

C++字符串

2024-02-22 09:46:04

C++字符串格式化開發
點贊
收藏

51CTO技術棧公眾號

免费亚洲电影在线| 偷窥自拍亚洲色图精选| 一区二区三区在线免费观看| 亚洲自拍偷拍福利| 在线看成人av| 精品国产乱码久久久久久果冻传媒 | 国产精品久久波多野结衣| 91精品国产乱码在线观看| 国产精品欧美日韩一区| 欧美挠脚心视频网站| 加勒比海盗1在线观看免费国语版| 色偷偷在线观看| 石原莉奈在线亚洲二区| 久久99精品国产99久久6尤物| 免费成人深夜夜行p站| 国产激情久久| 欧美日韩国产页| 国产日本欧美在线| 秋霞av在线| 国产精品1区2区3区| 国产成人精品久久亚洲高清不卡| avtt天堂在线| av在线不卡顿| 精品99999| 国产欧美一区二| 欧美xo影院| 亚洲国产精品综合小说图片区| 性欧美大战久久久久久久免费观看 | 亚洲永久免费精品| 不卡av电影院| 超碰人人人人人人人| 国产欧美啪啪| 日韩一本二本av| 爱爱爱爱免费视频| 国产成人精品亚洲日本在线观看| 亚洲午夜精品网| 中文字幕乱码免费| 337p日本欧洲亚洲大胆鲁鲁| 91免费视频观看| 国产精品日韩欧美一区二区三区 | 免费人成网站在线观看欧美高清| 国内成人精品视频| 欧美成人免费看| 亚洲综合色站| 久久夜色精品国产亚洲aⅴ| 久久久久无码精品国产sm果冻| 久久精品论坛| 亚洲成色777777女色窝| 性色av浪潮av| 国产亚洲高清一区| 91麻豆精品91久久久久同性| 男生操女生视频在线观看| 在线成人视屏| 欧美在线播放高清精品| 日日碰狠狠丁香久燥| 亚洲风情在线资源| 欧美色videos| 国产麻花豆剧传媒精品mv在线| 国产在线精彩视频| 丁香五六月婷婷久久激情| 男女超爽视频免费播放| 蜜桃麻豆影像在线观看| 欧美日韩中文字幕在线视频| 777精品久无码人妻蜜桃| 阿v视频在线观看| 精品日韩中文字幕| 国产精品无码专区av在线播放| 亚洲欧洲美洲av| 91九色02白丝porn| 免费看污黄网站| 亚洲久草在线| 欧美成人a∨高清免费观看| 激情av中文字幕| 大桥未久女教师av一区二区| 国产视频精品久久久| 亚洲第一香蕉网| 日韩.com| 久精品免费视频| 日韩三级一区二区三区| 老司机精品视频网站| 国产精品揄拍500视频| 99久久99久久久精品棕色圆| 成人午夜短视频| 女女同性女同一区二区三区91| 成人三级黄色免费网站| 中文字幕一区在线| 91成人综合网| 欧美成人影院| 91精品一区二区三区久久久久久| 日本少妇一级片| 亚洲深夜福利在线观看| www日韩中文字幕在线看| 九九热这里有精品视频| 性伦欧美刺激片在线观看| 国产精品美女主播| 亚洲精品国产av| 国产区在线观看成人精品| 免费观看黄色的网站| 91豆花视频在线播放| 欧美性生活久久| 无码国产精品一区二区免费式直播| 一个色免费成人影院| 久久久精品一区| 综合激情网五月| 极品少妇xxxx精品少妇偷拍| 精品久久久久久综合日本| 一区二区三区视频在线观看视频| 亚洲影院免费观看| 成人综合视频在线| 日韩在线网址| 中文字幕国产亚洲2019| 国产亚洲自拍av| 蜜臀av在线播放一区二区三区| 高清国语自产拍免费一区二区三区| 男女视频在线观看免费| 一区二区在线观看视频| jizz欧美激情18| 国产精品毛片视频| 欧美成人精品在线视频| 青青视频在线免费观看| 国产jizzjizz一区二区| 亚洲欧美日韩精品综合在线观看| 欧美gv在线观看| 日韩精品一区二区三区视频播放| 在线观看日本黄色| 免费在线成人| 国产一区高清视频| 中文字幕中文字幕在线十八区| 欧美性xxxxxx少妇| 国产免费看av| 亚洲国产婷婷| 99c视频在线| 黄色成人影院| 欧美日韩午夜影院| 少妇精品无码一区二区免费视频 | 国产精品久久久久久户外露出| 亚洲自偷自拍熟女另类| 欧美激情网址| 97国产精品久久| 成人免费公开视频| 一区二区三区中文字幕| 亚洲三级在线视频| 国产精品精品国产一区二区| 国产精品自拍小视频| jizz视频在线观看| 欧美伊人久久久久久久久影院| 中文字幕免费看| 性欧美精品高清| 美女主播视频一区| 性爽视频在线| 亚洲人成电影网站色www| www.伊人久久| 久久久一区二区三区捆绑**| 国模吧无码一区二区三区| 红杏视频成人| 91精品国产成人www| 囯产精品一品二区三区| 亚洲va欧美va天堂v国产综合| 美女扒开腿免费视频| 亚洲三级影院| 欧美13一14另类| 色豆豆成人网| 中文字幕亚洲综合久久筱田步美 | 青青国产91久久久久久| 亚洲精品自在在线观看| 四虎影视精品永久在线观看| 久久精品国产精品| 亚洲爱情岛论坛永久| 夜色激情一区二区| 国产福利在线观看视频| 久久精品免费| 一区二区三区我不卡| 麻豆国产精品| 91精品国产综合久久男男| 成年丰满熟妇午夜免费视频| 香蕉视频亚洲一级| 国产一区二区激情| 国产精品久久久久毛片| 一区二区高清免费观看影视大全 | 伊人久久大香线蕉午夜av| 香蕉久久一区| 久久久免费精品视频| 偷拍25位美女撒尿视频在线观看| 日本高清不卡视频| 日本二区三区视频| 成人午夜免费电影| 久久久免费视频网站| 99久久精品网| 国产精品视频在线免费观看| 性感美女一区二区在线观看| 久久精品小视频| 色综合免费视频| 欧美在线视频你懂得| 老女人性淫交视频| 91视频91自| 涩多多在线观看| 小嫩嫩精品导航| 伊人再见免费在线观看高清版 | 亚洲免费视频一区| 97久久亚洲| 国产精品久久久精品| 日本欧美电影在线观看| 亚洲欧美国内爽妇网| 国产精品嫩草影院桃色| 欧美性极品xxxx娇小| 免费在线观看h片| 久久天堂av综合合色蜜桃网| 涩多多在线观看| 日韩一区欧美二区| www.av91| 亚洲欧洲美洲一区二区三区| 美女被啪啪一区二区| 久久伊人久久| 国产精品日韩在线| 男人久久天堂| 九九热r在线视频精品| 福利成人在线观看| 亚洲国产另类久久精品| 99这里有精品视频| 欧美少妇一区二区| 五月婷婷激情视频| 亚洲国产乱码最新视频| 91插插插插插插| 国产精品毛片久久久久久久| 37p粉嫩大胆色噜噜噜| 东方欧美亚洲色图在线| 手机免费av片| 麻豆视频一区二区| 亚洲一区二区蜜桃| 久久婷婷影院| 国产97在线 | 亚洲| 亚洲黄色精品| 国产一线二线三线女| 欧美在线精品一区| 这里只有精品66| 日韩在线视频精品| 日韩欧美亚洲区| 国产精品三级| 欧洲在线视频一区| 色天天色综合| 国产伦精品一区二区三区在线| 国产精品日本一区二区不卡视频| 国产精品爽黄69| 国产一区高清| 国产精品自拍小视频| 成人激情视屏| 国产欧美精品日韩| 国产69精品久久久久9999人| 国产精品扒开腿做爽爽爽男男 | 香蕉视频免费在线播放| 一色桃子一区二区| 91社区在线观看播放| 中文字幕日韩视频| 欧美激情办公室videoshd| 在线视频中文亚洲| 五月婷婷在线视频| 久久好看免费视频| 亚洲精品天堂| 久久久久久久久久久国产| 国产乱妇乱子在线播视频播放网站| 欧美激情视频一区| free性护士videos欧美| 69av成年福利视频| 午夜激情成人网| 国产日韩欧美另类| 玖玖玖视频精品| 国模一区二区三区私拍视频| 亚洲裸色大胆大尺寸艺术写真| 欧美日韩系列| 日韩一区电影| 中国丰满熟妇xxxx性| 亚洲综合另类| 亚洲综合色在线观看| 国产伦精品一区二区三区在线观看| 亚洲一区二区三区三州| caoporen国产精品视频| 91视频在线网站| 国产精品国产三级国产| 黄色一级片中国| 黑人精品xxx一区一二区| 中文字幕乱伦视频| 欧美一级日韩免费不卡| 视频污在线观看| 国产一区二区动漫| 日韩精品分区| 国产精品久久久久77777| 日韩中文字幕视频网| 欧美精品在线一区| 天天射成人网| 免费观看日韩毛片| 精品制服美女丁香| 波多野结衣加勒比| 国产精品色哟哟| 国产精品999久久久| 欧美中文字幕一区二区三区| 精品国产九九九| 国产亚洲精品成人av久久ww| 18+激情视频在线| 情事1991在线| 亚洲视频精选| 亚洲欧美日韩精品久久久| 伊人久久久大香线蕉综合直播 | 亚洲最新中文字幕| 手机电影在线观看| 国产精品久久久久久久久久新婚| 99ri日韩精品视频| 制服丝袜综合日韩欧美| 亚洲欧美bt| 少妇伦子伦精品无吗| 亚洲国产精品高清| 国产情侣在线视频| 欧美一区二区三区人| 超碰免费在线观看| 2018国产精品视频| 成人免费91| 少妇特黄a一区二区三区| 日韩午夜高潮| 九色91porny| 国产精品国产馆在线真实露脸| 五月婷婷亚洲综合| 日韩女优视频免费观看| 午夜视频在线观看网站| 日韩美女免费线视频| 男人的天堂久久| 日本免费成人网| 精品无人区卡一卡二卡三乱码免费卡 | 亚洲一区av在线播放| 波多野结衣在线观看| 91精品免费| 天天做天天爱天天综合网2021| 欧美精品无码一区二区三区| 99久久夜色精品国产网站| 毛片a片免费观看| 欧美一区二区高清| 看黄网站在线| 91视频九色网站| 久久久久美女| caoporm在线视频| 国产精品伦理在线| 中文字幕精品一区二区精| 亚洲日韩欧美视频一区| 性欧美hd调教| 日韩精品大片| 青娱乐精品在线视频| 99在线视频免费| 欧美午夜免费电影| 91在线播放网站| 91精品久久久久久久久久另类| 成人区精品一区二区婷婷| 国产一线二线三线在线观看| 国产三级欧美三级日产三级99| 国产农村妇女aaaaa视频| 日韩精品中文字幕有码专区| 亚洲欧洲自拍| 色一情一乱一伦一区二区三区| 日本免费新一区视频| 亚洲欧洲综合网| 91麻豆精品国产91久久久使用方法| а√天堂8资源在线官网| 亚洲va国产va天堂va久久| 欧美精品综合| 天天躁日日躁狠狠躁av麻豆男男| 午夜成人在线视频| 青青草在线免费观看| 国产精品高清网站| 999精品一区| 曰本三级日本三级日本三级| 亚洲一区二区三区四区中文字幕| 欧美一区二区在线观看视频| 1769国产精品| 欧美色爱综合| 国产精品19p| 疯狂做受xxxx高潮欧美日本 | 麻豆乱码国产一区二区三区| swag国产精品一区二区| 黄色免费观看视频网站| 欧美高清在线视频| 国产乱码精品一区二区| 久久人人97超碰精品888| 亚州综合一区| 蜜臀av免费观看| 亚洲女人的天堂| 性xxxx视频播放免费| 国产精品无av码在线观看| 欧美黄色一区| 亚洲精品乱码久久久久久久久久久久 | www.好吊操| 国产欧美日韩视频在线观看| 国产女人高潮时对白| 欧美中文字幕视频在线观看| 欧美hd在线| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 亚洲精品久久7777777| 91精品影视| 日韩欧美猛交xxxxx无码| 国产日韩欧美激情| 国产 日韩 欧美 精品| 国产精品夜间视频香蕉| 亚洲日本激情| 久久噜噜色综合一区二区|