• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            colorful

            zc qq:1337220912

             

            C++讀寫文件

            掌握文本文件讀寫的方法
            了解二進制文件的讀寫方法

            C++文件流:
            fstream  // 文件流
            ifstream  // 輸入文件流
            ofstream  // 輸出文件流

            //創建一個文本文件并寫入信息
            //同向屏幕上輸出信息一樣將信息輸出至文件
            #include<iomanip.h>
            #include<fstream.h>
            void main()
            {
              ofstream f1("d:\\me.txt");           //打開文件用于寫,若文件不存在就創建它
              if(!f1)return;                 //打開文件失敗則結束運行
              f1<<setw(20)<<"姓名:"<<"廉東方"<<endl;     //使用插入運算符寫文件內容
              f1<<setw(20)<<"家庭地址:"<<"河南鄭州"<<endl;
              f1.close();                   //關閉文件
            }
            運行后打開文件d:\me.txt,其內容如下:
                   姓名:廉東方
                 家庭地址:河南鄭州

            文件操作:
            打開文件
              文件名
                注意路徑名中的斜杠要雙寫,如:
                "D:\\MyFiles\\ReadMe.txt"
              文件打開方式選項:
                ios::in    = 0x01, //供讀,文件不存在則創建(ifstream默認的打開方式)
                ios::out    = 0x02, //供寫,文件不存在則創建,若文件已存在則清空原內容(ofstream默認的打開方式)
                ios::ate    = 0x04, //文件打開時,指針在文件最后。可改變指針的位置,常和in、out聯合使用
                ios::app    = 0x08, //供寫,文件不存在則創建,若文件已存在則在原文件內容后寫入新的內容,指針位置總在最后
                ios::trunc   = 0x10, //在讀寫前先將文件長度截斷為0(默認)
                ios::nocreate = 0x20, //文件不存在時產生錯誤,常和in或app聯合使用
                ios::noreplace = 0x40, //文件存在時產生錯誤,常和out聯合使用
                ios::binary  = 0x80  //二進制格式文件
              文件保護方式選擇項:
                filebuf::openprot;   //默認的兼容共享方式
                filebuf::sh_none;    //獨占,不共享
                filebuf::sh_read;    //讀共享
                filebuf::sh_write;   //寫共享
              打開文件的方法
                調用構造函數時指定文件名和打開模式
                ifstream f("d:\\12.txt",ios::nocreate);         //默認以 ios::in 的方式打開文件,文件不存在時操作失敗
                ofstream f("d:\\12.txt");                //默認以 ios::out的方式打開文件
                fstream f("d:\\12.dat",ios::in|ios::out|ios::binary); //以讀寫方式打開二進制文件
                使用Open成員函數
                fstream f;
                f.open("d:\\12.txt",ios::out);             //利用同一對象對多個文件進行操作時要用到open函數
            檢查是否成功打開
              成功:
                if(f){...}       //對ifstream、ofstream對象可用,fstream對象不可用。
                if(f.good()){...}
              失敗:
                if(!f){...}       // !運算符已經重載
                if(f.fail()){...}
            讀寫操作
              使用<<,>>運算符
              只能進行文本文件的讀寫操作,用于二進制文件可能會產生錯誤。
              使用函數成員 get、put、read、write等
              經常和read配合使用的函數是gcount(),用來獲得實際讀取的字節數。
            讀寫二進制文件注意事項
              打開方式中必須指定ios::binary,否則讀寫會出錯
              用read\write進行讀寫操作,而不能使用插入、提取運算符進行操作,否則會出錯。
              使用eof()函數檢測文件是否讀結束,使用gcount()獲得實際讀取的字節數
            關閉文件
              使用成員函數close,如:
              f.close(); 
              利用析構函數
              對象生命期結束時會檢查文件是否關閉,對沒有關閉的文件進行關閉操作。
            隨機讀寫文件
              通過移動文件讀寫指針,可在文件指定位置進行讀寫。
              seekg(絕對位置);      //絕對移動,    //輸入流操作
              seekg(相對位置,參照位置);  //相對操作
              tellg();          //返回當前指針位置
              seekp(絕對位置);      //絕對移動,    //輸出流操作
              seekp(相對位置,參照位置);  //相對操作   
              tellp();          //返回當前指針位置
              參照位置:
              ios::beg  = 0       //相對于文件頭
              ios::cur  = 1       //相對于當前位置
              ios::end  = 2       //相對于文件尾
            讀寫文本文件的示例
            //為能夠正確讀出寫入文件的各數據,各數據間最好要有分隔
            #include<fstream.h>
            void main()
            {
              fstream f("d:\\try.txt",ios::out);
              f<<1234<<' '<<3.14<<'A'<<"How are you"; //寫入數據
              f.close();
              f.open("d:\\try.txt",ios::in);
              int i;
              double d;
              char c;
              char s[20];
              f>>i>>d>>c;               //讀取數據
              f.getline(s,20);
              cout<<i<<endl;             //顯示各數據
              cout<<d<<endl;
              cout<<c<<endl;
              cout<<s<<endl;
              f.close();
            }
            運行結果:
            1234
            3.14
            A
            How are you
            Press any key to continue
            顯示文本文件的內容
            //使用get()一次讀一個字符--------------------------------方案一
            #include<fstream.h>
            void main()
            {
              ifstream fin("d:\\簡介.txt",ios::nocreate);
              if(!fin){
                cout<<"File open error!\n";
                return;
              }
              char c;
              while((c=fin.get())!=EOF)cout<<c;    //注意結束條件的判斷
              fin.close();
            }
            //使用get(char *,int n,char delim='\n')一次讀多個字符----方案二
            //巧妙利用文本文件中不會有字符'\0'的特點進行讀取
            #include<fstream.h>
            void main()
            {
              ifstream fin("d:\\簡介.txt",ios::nocreate);
              if(!fin){
                cout<<"File open error!\n";
                return;
              }
              char c[80];
              while(fin.get(c,80,'\0')!=NULL)cout<<c; //注意結束條件的判斷
              fin.close();
            }
            //使用read(char *,int n)讀文件---------------------------方案三
            #include<fstream.h>
            void main()
            {
              ifstream fin("d:\\簡介.txt",ios::nocreate);
              if(!fin){
                cout<<"File open error!\n";
                return;
              }
              char c[80];
              while(!fin.eof())            //判斷文件是否讀結束
              {
                fin.read(c,80);
                cout.write(c,fin.gcount());
              }
              fin.close();
            }
            拷貝文件
            //二進制文件操作示例
            #include<fstream.h>
            void main()
            {
              ifstream fin("C:\\1.exe",ios::nocreate|ios::binary);
              if(!fin){
                cout<<"File open error!\n";
                return;
              }
              ofstream fout("C:\\2.exe",ios::binary);
              char c[1024];
              while(!fin.eof())
              {
                fin.read(c,1024);
                fout.write(c,fin.gcount());
              }
              fin.close();
              fout.close();
              cout<<"Copy over!\n";
            }

            posted @ 2013-03-29 14:21 多彩人生 閱讀(381) | 評論 (0)編輯 收藏

            postgresql 編碼

            psql 里輸入 \encoding 查看當前編碼
                \encoding utf8   設置為utf8

            posted @ 2013-03-05 18:40 多彩人生 閱讀(426) | 評論 (0)編輯 收藏

            flex

            http://www.cnblogs.com/AS30/archive/2011/10/10/2205084.html  as3加載圖片的兩種方法

            posted @ 2012-11-17 14:16 多彩人生 閱讀(241) | 評論 (0)編輯 收藏

            luabind常用方法總結

            luabind比較復雜,功能包羅萬象,但使用起來比較簡單,特別是最常用的方法只有幾個,下面結合一個簡單的例子總結一下。     在我們游戲應用中,一般都是已c++為主導的,也就是說c++主動調用lua腳本。
            先寫一個比較常見的lua腳本:
            1. nGlobal = 10 --一個全局的整形變量   
            2. strGlobal = "hello i am in lua" --一個全局的字符串變量   
            3. --一個返回值為int類型的函數   
            4. function add(a, b)   
            5.     return a+b   
            6. end   
            7. --一個返回值為string類型的函數   
            8. function strEcho(a)   
            9.     print(a) 10   
            10.     return 'haha i have print your input param'   
            11. end   
            12. cppapi.testFunc() --調用c++暴露的一個測試函數   
            13. t={name='ettan', age=23, desc='正值花季年齡'}  
             
            ////////////////////////////////////lua腳本結束
            下面寫c++函數中的調用了
            1. #include<iostream>  
            2. #include<string>  
            3. using namespace std;  
            4. #include<lua.hpp>  
            5. #include<luabind/function.hpp>  
            6. void testFunc()  
            7. {  
            8.     cout<<"helo there, i am a cpp fun"<<endl;  
            9. }  
            10. int main(int argc, char* argv[])  
            11. {  
            12.     //首先聲明luaState環境  
            13.     using namespace luabind;  
            14.     lua_State* L = lua_open();  //也可以用luaL_newState()函數  
            15.     luaL_openlibs(L);   //注意將lua默認庫打開,要不會出現N多錯誤的,比如print函數都沒有  
            16.     //將c++中的函數暴露給lua  
            17.     module(L, "cppapi")  
            18.     [  
            19.         def("testFunc", (void(*)(void))testFunc)  
            20.     ];  
            21.     //加載lua腳本,我們臨時起名test.lua  
            22.     luaL_dofile(L, "test.lua");  
            23.     try  
            24.     {  
            25.         //調用lua中的整形全局變量  
            26.         int nLuaGlobal =     luabind::object_cast<int>(luabind::globals(L)["nGlobal"]) ;  
            27.         //調用lua中的字符串變量  
            28.         string strLuaGlobal = luabind::object_cast<string>(luabind::globals(L)["strGlobal"]);  
            29.         //獲取table,方法一,通過luabind::object 固有方法  
            30. luabind::object luaTable = luabind::globals(L)["t"] ;  
            31. string name=luabind::object_cast<string>(luaTable["name"]) ;  
            32.         int age = luabind::object_cast<int>(luaTable["age"]) ;  
            33.         //獲取table,方法二,通過gettable  
            34.         string desc = luabind::object_cast<string>(luabind::gettable(luaTable,"desc"));  
            35.         //下面是調用lua中函數  
            36.         int nAddRes = luabind::call_function<int>(L, "add", 3, 4) ;  
            37.         string strEchoRes = luabind::call_function<string>(L, "strEcho", "c++參數") ;  
            38.     }  
            39.     catch(...)  
            40.     {  
            41.         cout<<"error"<<endl;  
            42.     }  
            43.     return 0;  
            44. }  
             
                我們目前常用的方法暫時就有這些,當然在實際編碼中,c++暴露給lua的經常是c++類中的函數,只要稍加修改就行!

            posted @ 2012-10-18 23:45 多彩人生 閱讀(901) | 評論 (0)編輯 收藏

            iconv的安裝和使用

            一。Linux下iconv的安裝
            包的下載頁面http://www.gnu.org/software/libiconv/
            $ ./configure --prefix=/usr/local
            $ make
            $ make install

            安裝時注意gettext和libiconv的一方更新,另一方需要更新的問題。
            詳細參考安裝指南。

            二。windows下安裝iconv
            下載路徑:http://gnuwin32.sourceforge.net/packages/libiconv.htm
            我的使用主要是利用iconv進行編程,故只使用了lib和頭文件
            1設置c/c++的 Additional Include Dictories,將頭文件路徑加入

            2設置Linker下的General和Input,添加lib名字和lib路徑。

            3將charset.dll和iconv.dll放入生成可執行exe文件的目錄下面

            !!!注意:為了實現跨平臺需要將*nix版的iconv.h和windows版本的合并,方法:利用
            條件預編譯#indef 。

            posted @ 2012-10-17 17:57 多彩人生 閱讀(4657) | 評論 (0)編輯 收藏

            Linux WideCharToMultiByte WideCharToMultiByte

            http://blog.csdn.net/hbhhww/article/details/7459501

            Linux下面的沒有命名為  () 和 MultiByteToWideChar() 函數,WideCharToMultiByte,MultiByteToWideChar是windows下的函數,在linux下也有類似的兩個函數:

            mbstowcs()
            wcstombs()

            值得注意的是:

            size_t mbstowcs(wchar_t *wcstr,const char *mbstr,size_t count);

            這個函數的第三個參數count,大小一定要是mbstr長度的2倍,否則出來的中文也會是亂碼

             

            測試一下:

             

                setlocale(LC_ALL,"zh_CN.GB18030");
                wchar_t wcstr[20] = L"字符測試123abc";

                int len = wcslen(wcstr)+1;
                printf("len = %d /n",len);
                for(int i = 0; i < len; i++)
                    printf("0x%08x ",wcstr[i]);
                printf("/n");

                char str[55] = {0};   
                int n = wcstombs(str,wcstr,55);
                if(-1 == n)
                {
                perror("wcstombs ");
                exit(-1);
                }   
                printf("n = %d/n",n);
                for(int i = 0; i < n+1; i++)
                    printf("0x%08x ",str[i]);
                printf("/n");   
                wchar_t wch[50]={0};
                int m = mbstowcs(wch,str,n);    
                if(m == -1)
                {
                perror("Converting");
                exit(-1);
                }
                printf("m = %d/n",m);
                for(int i =0; i<m+1;i++)
                printf("0x%08x ",wch[i]);
                printf("/n");
                return 0;
            }

             

            還有呢,轉碼還可以使iconv函數族,包含以下三個函數:
            iconv_t iconv_open(const char *tocode, const char *fromcode);

            size_t iconv(iconv_t cd,char **inbuf,size_t *inbytesleft,char **outbuf,size_t *outbytesleft);

            int iconv_close(iconv_t cd);

             

             

            測試一下:

            #include <stdio.h>
            #include <iconv.h>
            #include <string.h>

            #define BUFLEN 256

            char outbuf[BUFLEN];
            char inbuf[BUFLEN] = "characters convertion";

            int main()
            {    
                 char *pin = inbuf;
                 char *pout = outbuf;
                   
                 int inlen = strlen(pin);
                 int outlen = BUFLEN;

                 int retsize;

                 iconv_t cd;

                 cd = iconv_open("UTF-8", "GBK");

                 if((iconv_t)-1 == cd) {
                         perror("iconv_open error");
                         return -1;
                 }

                 retsize = iconv(cd, &pin, (size_t *)&inlen, &pout, (size_t *)&outlen);

                 if((size_t)-1 == retsize) {
                         perror("iconv error");
                         return -2;   
                 }

                 if(outlen > 0) {
                         printf("%s/n", outbuf);
                 }

                 iconv_close(cd);

                 return 0;
            }

             

            另外

             

            關于Linux下轉碼的資料,這里比較全:

             

            http://www.360doc.com/content/11/0119/14/1317564_87612492.shtml

            posted @ 2012-10-17 17:56 多彩人生 閱讀(1191) | 評論 (0)編輯 收藏

            linux下遞歸刪除目錄下所有exe文件

            今天給學校部署校慶網站,做網站的同學傳給我的網站文件夾里,有很多exe文件,而且這些exe的文件名都是原來的目錄名,看起來是他的機器中了病毒。雖然exe文件在linux下無法運行,但是還是要刪除這些exe文件。

                在網上找了一下,《linux下遞歸刪除某個文件夾或文件》給了我滿意的方法,讓我可以一次性刪除某目錄及其子目錄下所有的exe文件。

            find . -name '*.exe' -type f -print -exec rm -rf {} \;

            (1) "."    表示從當前目錄開始遞歸查找

            (2) “ -name '*.exe' "根據名稱來查找,要查找所有以.exe結尾的文件夾或者文件

            (3) " -type f "查找的類型為文件

            (4) "-print" 輸出查找的文件目錄名

            (5) 最主要的是是-exec了,-exec選項后邊跟著一個所要執行的命令,表示將find出來的文件或目錄執行該命令。

                 exec選項后面跟隨著所要執行的命令或腳本,然后是一對兒{},一個空格和一個\,最后是一個分號

            posted @ 2012-09-29 11:03 多彩人生 閱讀(470) | 評論 (0)編輯 收藏

            centos下firefox的flash插件的安裝與卸載

            一定要注意系統的位數,是32位的還是64位的,我這里介紹的是32為的,64位的自行下載對應軟件安裝即可

             查看系統版本的命令:getconf LONG_BIT 返回32就是32位,返回64就是64位

            (一)用rpm來安裝

            首先下載rpm安裝包,選擇的是32bit的最新安裝包
            wget http://fpdownload.macromedia.com/get/flashplayer/pdc/11.1.102.55/flash-plugin-11.1.102.55-release.i386.rpm
            然后安裝
            rpm -i flash-plugin-11.1.102.55-release.i386.rpm
            如此使用rpm方式flash插件就安裝好了。如果想選擇其他版本可以訪問http://get.adobe.com/cn/flashplayer/

            說說這個rpm包怎么卸載,兩條命令
            rpm -e flash-plugin
            rpm -qa |grep ^flash-plugin

            如果第二條命令返回為空怎么表示卸載干凈了。

            第一條命令rpm -e flash-plugin是卸載命令,第二條rpm -qa |grep ^flash-plugin是驗證是否卸載成功了。

            (二) 插件式

            其實第二種我也不知道該如何命名,暫時先這么叫吧,如有確切或者更好的,請不吝賜教。

            同樣要先下載安裝包
            wget http://fpdownload.macromedia.com/get/flashplayer/pdc/11.1.102.55/install_flash_player_11_linux.i386.tar.gz
            然后解壓
            tar zxvf install_flash_player_11_linux.i386.tar.gz
            然后進入 cd install_flash_player_11_linux.i386
            然后將libflashplayer.so文件移動到~/.mozilla/plugins/即可,其他文件不要。

            如果不知道~/.mozilla/plugins/路徑,可以使用
            find / -name plugins
            來查找,我得到的結果是

            /etc/skel/.mozilla/plugins
            /usr/lib/qt-3.3/plugins
            /usr/lib/mozilla/plugins
            /usr/lib/xulrunner-1.9.2/plugins
            /usr/lib/krb5/plugins

            所以就把libflashplayer.so移動到/usr/lib/mozilla/plugins文件夾下就OK了。

            移動命令使用mv。具體請百度 google。

            (三)瀏覽器選擇安裝法

            最近有網友反映插件雖然安裝了但是還是提示未安裝,主要原因是版本選的不對。

            為了能更好的解決這個問題,現加一個方法。

            用firefox打開youtube或者其他視頻網站,會提示你安裝flash,然后點安裝,會顯示找不到(找到了更好),然后點左下角的那個鏈接,然后在新打開的網頁里點,安裝缺失插件,就跳到Adobe的網站了,在那里選擇相應版本的插件下載安裝就好了。

            下載的時候選擇.rpm那個大小在6M多吧,安裝方法同(一)

            posted @ 2012-09-28 19:25 多彩人生 閱讀(1504) | 評論 (0)編輯 收藏

            讓CentOS 6/Fedora 15顯示詳細啟動信息,不顯示進度條

            一些CentOS等Linux系統啟動后可能會出現讀進度條等待進入系統的過程,對于學習Linux啟動過程非常不利,我們可以將它恢復到顯示詳細啟動過程模式。

            使用root用戶修改 /boot/grub/grub.conf 文件。

            [root@Slyar ~]# vim /boot/grub/grub.conf

            找到下面的部分,將"rhgb"去掉,保存即可。其中"rhgb"表示"redhat graphics boot",就是圖形進度條模式。而"quiet"表示在啟動過程中只顯示重要啟動信息,類似硬件自檢之類的消息不會顯示,可以有選擇地選用。

            kernel /vmlinuz-2.6.32-71.el6.i686 ro root=UUID=697cb0d9-19f6-414a-90a1-5ceb2f40b03d rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=zh_CN.UTF-8 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet

            posted @ 2012-09-28 09:36 多彩人生 閱讀(377) | 評論 (0)編輯 收藏

            用Vim搭建C/C++開發環境

             

            http://blog.csdn.net/wooin/article/details/1858917
            http://easwy.com/blog/archives/advanced-vim-skills-taglist-plugin/

             

            -------------------------------------------------------

            用Vim搭建C/C++開發環境

            李若老師曾經說:世界上的程序員分三種,一種是用Emacs,一種是用Vim的,其它的歸為第 三種。其意是說如果一個程序員兩者都不用的話,那大抵是不能歸為入流者行列的。對使用C/C++的人來說,很多人喜歡Emacs,據說與對 Stallman的崇拜與愛屋及烏有關;-) 當然,Emacs與Vim雖然在文本編輯方面的性能是等價的,但使用起來兩者還是有很大的不同:Vim是為 程序員而開發的,功能強大而實用;Emacs除了文本編輯之外,作為Unix下的“第一個人工生命”,還可以通過插件完成各種包括聽mp3,發郵件,甚至 煮咖啡的操作,所以,Emacs更像是一種“生活方式”。言歸正傳,我個人是用Vim的,在編寫C/C++的程序時,只用Vim自身的功能還是不太爽的, 還需要其它的插件,將其構造成一個比VC爽得多的IDE。由于每個工具介紹清楚都不是一兩句話說得完的,以下只列出插件的名稱,具體的內容google之 即可;-)其中vim插件可以到VIMer最常去的www.vim.org下載

            1. Ctags,非vim插件。Ctags是Vim必不可少的工具,它可以將C/C++的宏、變量、函數、類等一系列信息提取出來,以方便切換。Ctags還可以使用更強大的cscope代替。
            2. Taglist,Vim插件。Taglist是與ctags的配合的vim的強大工具之一,其功能是將當前buffer的所有信息作成一個列表放在旁邊,隨時可以切換。
            3. omnicppcomplete,Vim插件。其功能顧名思義就是自動補全工具(可不是簡單的Ctrl+N哦),比如定義了一個類叫myClass,生成一個實例myClass c; 那么輸入c.之后就可以出現一個框,里面是c所有的成員函數。
            4. csupport,Vim插件。這是一個非常好的C/C++ ide,有了它什么編譯運行一鍵搞定,定義一個類一鍵就可以給出一個模板格式,相當實用。
            5. clewn,非Vim插件。其用處是聯結vim與gdb(沒聽說過gdb?google補個課吧~)。在打開clewn的時候,它利用 NetBeans,把gVim與gdb無縫地聯結起來,還可以像matlab一樣,在調試的時候把鼠標放在變量名上,就會有一個ballon出來顯示這個 變量的指,炫吧?誰說只有emacs才能與gdb結合的好?另外它的另外一個替代品是VimGdb,這是個Vim插件。
            6. Doxygenkit。注釋與文檔合二為一的最強工具當然是Doxygen,有了Doxygenkit,用Vim寫Doxygen格式一鍵搞定。

            至此,我定制的Vim的C/C++IDE就搞定了,用起來比VC那個真是爽不知多少倍了。除了以上的插件外,Vim常用的還有Vimshell,project等工具,都有很炫的效果,請各位VIMers 自己體會

            posted @ 2012-09-26 17:55 多彩人生 閱讀(1800) | 評論 (2)編輯 收藏

            僅列出標題
            共25頁: First 8 9 10 11 12 13 14 15 16 Last 

            導航

            統計

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            伊人久久大香线蕉综合热线| 久久久久久久久久久精品尤物 | 香蕉久久久久久狠狠色| 久久久久亚洲精品中文字幕| 亚洲国产成人精品久久久国产成人一区二区三区综 | 国产精品对白刺激久久久| 狠狠色丁香久久综合五月| 久久国产三级无码一区二区| 一本色道久久综合狠狠躁篇| 久久精品国产网红主播| 久久婷婷五月综合色99啪ak| 久久久久人妻一区精品色| 久久久久国产一区二区三区| 亚洲国产精品无码久久久不卡 | 偷偷做久久久久网站| 久久综合久久综合久久| 久久久久久免费视频| 国产L精品国产亚洲区久久| 青青草原精品99久久精品66| 精品久久人人妻人人做精品| 色妞色综合久久夜夜| 久久99热这里只有精品66| 国产成人精品久久| 久久国产成人精品麻豆| 久久精品无码一区二区无码| 久久伊人精品一区二区三区| 精品久久久久久国产牛牛app| 人妻精品久久久久中文字幕69| 天堂无码久久综合东京热| 精品久久久久久99人妻| 国产国产成人久久精品| 亚洲成人精品久久| 久久免费精品一区二区| 99精品久久久久中文字幕| 久久综合给合久久狠狠狠97色69| 色天使久久综合网天天| 波多野结衣久久精品| 香蕉久久久久久狠狠色| 一本久道久久综合狠狠躁AV| 亚洲国产精品狼友中文久久久 | 少妇久久久久久被弄高潮|