• <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>

            The Fourth Dimension Space

            枯葉北風寒,忽然年以殘,念往昔,語默心酸。二十光陰無一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢令

            istringstream類研究

            C++程序把輸入和輸出看作字符流,輸入時,程序從輸入流中提取字節,輸出時,程序把字節插入到輸出流中。對于輸入輸出流既可以來自標準輸入輸出設備,也可以來自文件,甚至可以來自String對象,三者分別屬于iostream family、fstream family、sstream family。
            對于iostream類,就是我們通常所說的標準流,它把程序跟標準I/O連接在一起,輸入來自鍵盤,輸出送往監視器。
            對于fstream類,它把程序跟文件關聯起來,輸入來自文件,輸出到文件。
            對于sstream類,它是提供程序和string對象之間的I/O,可通過ostringstream sout和istringstream sin來聲明兩個對象,分別對應輸出流和輸入流,這給編程帶來極大的方便,例如可以從文本文件中讀取一批數字字符到string對象中,再把string對象作為程序的輸入流,既可把從文件中讀取來的數字字符單個進行讀取,從而進行處理。

            以上內容為網上轉載,呵呵,原來iostream,fstream還有sstream呈三權分立之勢。

            #include<iostream>
            #include
            <fstream>
            #include
            <sstream>

            using namespace std;


            int main ()
            {
                
            char str[1000]="12 34.53 【O(∩_∩)O~(*^__^*)】 1234 12.12345678901234567890 #@$#@$#@$&*@#&#(!@#$";    
                istringstream test(str);
                
            //test="12 34.53 345342 34.123456789 【O(∩_∩)O~(*^__^*)】"
                int a;
                
            double b;
                
            char c[100];
                
            while(1)
                
            {
                    test
            >>a;
                    test
            >>b;
                    test
            >>c;
                }

            return 0;
            }



            以上程序在vc6.0上運行正常;
            值得一提的是,經過我的測試,我發現雖然sstream是純c++的東西,但是它也可以用char型數組進行初始化;
            而且輸入的數據默認情況下以空格為分隔符;
            輸入浮點類型的時候,最多只能取到小數點后15位,第15位會進行四舍五入;
            如果你的輸入格式和數據流格式不匹配,那么將導致程序完全運行錯誤,不過我很奇怪c++內部為什么不會報錯?
            只有一種情況例外
            對于一個浮點數 比如說123,456
            如果先以整數輸入,那么得到123
            再以浮點數輸入,得到0.456;

            小結:感覺istringstream和sscanf是同類型的函數,只不過一個屬于傳統的c語言而另一個屬于高級的c++;
            用它可以方便的分離字符串,并且可以在字符串長度未知的情況下進行操作,這是sscanf所無可比擬的。

            最后,要特別鳴謝的是張宏課上面的那位同學,多謝你的指點 :-)


            posted on 2009-03-23 22:36 abilitytao 閱讀(4041) 評論(10)  編輯 收藏 引用

            評論

            # re: istringstream類研究 2009-03-24 23:46 OwnWaterloo

            以上程序在vc6.0上運行正常?

            我這里的vc6, 會報很多頭文件缺失。
            比如iostream 會缺少streambuf stdexcept exception

            要自己寫這3個文件, 分別再include STREAMBF STDXCEPT XCEPTION

            總之, 我這里的vc6的include中的頭文件, 名字全是大寫,而且都不超過8個字符。
            我懷疑我用的是不是vc6 for dos 。。。。  回復  更多評論   

            # re: istringstream類研究[未登錄] 2009-03-25 00:28 abilitytao

            @OwnWaterloo
            iostream屬于C++標準庫   回復  更多評論   

            # re: istringstream類研究 2009-03-25 12:31 OwnWaterloo

            @abilitytao
            我還不知道iostream屬于標準庫嗎?
            我只是想問下樓主的vc6的版本?
            Microsoft Visual Studio\VC98\Include下的文件是大寫還是小寫?
            有沒有8字符限制?
            謝謝~

              回復  更多評論   

            # re: istringstream類研究 2009-03-25 13:20 OwnWaterloo

            @abilitytao
            sorry, 剛才語氣有點過激。
            希望樓主能解答我的問題, 再次感謝~~  回復  更多評論   

            # re: istringstream類研究[未登錄] 2009-03-25 17:41 abilitytao

            @OwnWaterloo
            呵呵 那個目錄下都是大寫的頭文件
            至于你說的vc for dos,我沒有用過 不是很清楚
            不過現在vs2008都已經出來了 功能比6.0強大許多 不妨直接用2008吧 網上有下載的

              回復  更多評論   

            # re: istringstream類研究 2009-03-25 18:48 OwnWaterloo

            @abilitytao
            那直接就有 iostream streambuf exception stdexcept 這些文件咯?
            它們的文件名都超過8個字符。

            我這里沒有…… 所以我懷疑是vc6 for dos……

            我也有vs2008 …… 不過還有固執的人在使用vc6 …… 所以盡可能的提供支持……  回復  更多評論   

            # re: istringstream類研究[未登錄] 2009-03-25 23:36 abilitytao

            @OwnWaterloo
            這個。。。我本來是用vc6.0的 后來發現6.0對運算符重載的支持不太好
            而且用6.0調試STL相當麻煩 所以我現在都用2005了 。。。  回復  更多評論   

            # re: istringstream類研究 2009-03-26 11:14 Sunshine Alike

            學習了。剛剛正遇到一個與string相關的問題 ^_^
            不過請教下LZ,C++里把int轉為string有什么簡便的方法沒有,需要用到這些流么  回復  更多評論   

            # re: istringstream類研究[未登錄] 2009-03-26 16:51 abilitytao

            @Sunshine Alike
            用ostringstream應該可以 它的作用相當于c里面的sprintf 不過我沒有去驗證過 你可以自己試試  回復  更多評論   

            # re: istringstream類研究 2009-03-28 00:24 Sunshine Alike

            @abilitytao
            感謝,問題已經解決了。  回復  更多評論   

            99久久国产综合精品网成人影院| 草草久久久无码国产专区| 久久精品国产一区二区 | 99麻豆久久久国产精品免费| 久久久久亚洲AV无码专区首JN| 少妇被又大又粗又爽毛片久久黑人| 精品久久久久久无码人妻热 | 国产精品视频久久久| 久久天天躁狠狠躁夜夜网站| 人妻无码αv中文字幕久久| AV无码久久久久不卡蜜桃| 一本色道久久综合亚洲精品| 丁香色欲久久久久久综合网| 狠狠色狠狠色综合久久| 综合人妻久久一区二区精品| 久久久精品人妻一区二区三区四 | 亚洲精品乱码久久久久久不卡| 欧美一级久久久久久久大片| 久久久精品国产免大香伊| 中文字幕人妻色偷偷久久 | 久久亚洲精品国产精品婷婷| 狠狠精品久久久无码中文字幕 | 99久久国产综合精品麻豆| 国产成人精品免费久久久久| 国产一区二区精品久久凹凸| 少妇人妻综合久久中文字幕| 99国产精品久久| 无码国内精品久久人妻麻豆按摩| 中文字幕无码精品亚洲资源网久久| 99re久久精品国产首页2020| 热RE99久久精品国产66热| 无码人妻精品一区二区三区久久| 国产美女久久久| 久久久久久久97| 999久久久国产精品| 中文精品久久久久人妻不卡| 久久九九青青国产精品| 久久精品一区二区三区AV| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区| 人妻无码久久精品| 久久精品国产一区|