d098. Stringstream運用練習(C++)
標籤 : stringstream
通過比率 : 2193人/2384人 ( 92% ) [非即時]
評分方式:
Tolerant

最近更新 : 2010-11-09 02:12

內容
小明為了要保證資料傳輸的隱密性,為檔案設置了一個加密金鑰,並且將金鑰藏進了一個檔案裡。收到檔案的小風得知要解譯出他所使用的加密金鑰,必須將檔案裡所有不含非數字的單字找出,加起來就是加密金鑰。可是,要求出這個金鑰,如果自己慢慢加實在是太慢了,所以請你寫一個程式來幫助他吧!
輸入說明
每組測資有一行,內含多個單字,每個單字之間會以空格作分隔(每一行的前後都有可能有空格,且分隔單字的空格可能不只一個)。
輸出說明
請求出所有僅含數字的單字,並且加總後輸出。這些數字的總和不會超過2的16次方。
範例輸入 #1
zerojudge萬歲
1a6f 6 65afd 15s 1sa 12 115
範例輸出 #1
0
133
測資資訊:
記憶體限制: 512 MB
公開 測資點#0 (100%): 1.0s , <1M
提示 :

C++ String Streams 字串串流

String streams 跟 和 函式庫很相近,不同的地方是,string streams 可以讓你在 string 的基礎上使用 I/O,而不是利用串流 stream 當基礎。 函式庫提供和 c 語言裡的 sscanf 和 sprintf 相類似的功能。

在  裡的三個主要類別:

  *stringstream - 允許輸入輸出
  *istringstream - 只允許輸入,類似 cin
  *ostringstream - 只允許輸出,類似 cout

String streams 完全是 iostreams 的從屬類別 subclasses,所以所有在 iostreams 可以使用的函式也都可以用在 stringstream。請看以下網址以便獲得更多 C++ I/O functions 的資訊。

因此,string streams 也支援以下函式:

變數宣告    創造新的 string streams
 << 和 >>   利用串流運算子來讀取字串串流
rdbuf()     取得這個 string stream 的緩衝區 buffer 位址
str()       取得或設定 string streamg 的 string

變數宣告:

  語法:
 
    #include

    stringstream();
    stringstream( openmode mode );
    stringstream( string s, openmode mode );
    ostringstream();
    ostringstream( openmode mode );
    ostringstream( string s, openmode mode );
    istringstream();
    istringstream( openmode mode );
    istringstream( string s, openmode mode );
   
  stringstream、ostringstream 和 istringstream 是輸入和輸出到字串。他們表現有些類似 fstream、ofstream 和 ifstream。將怎麼打開文件的旗幟必須根據 io_stream_mode_flags 的定義。ostringstream 可以被用於在一個字串進行寫入。這類似 C 的 sprintf()。
 
  範例:
 
    ostringstream s1;
    int i = 22;
    s1 << "Hello " << i << endl;
    string s2 = s1.str();
    cout << s2;
 
  同樣的,istringstream 可以被用於從一個字串中進行讀取。這類似 C 的 sscanf()。
 
  範例:
 
    istringstream stream1;
    string string1 = "25";
    stream1.str(string1);
    int i;
    stream1 >> i;
    cout << i << endl;  // 顯示 25
 
  你也可以指定字串在你宣告變數的時候,如同以下的範例。
 
    string string1 = "25";
    istringstream stream1(string1);
    int i;
    stream1 >> i;
    cout << i << endl;  // displays 25
   
  一個 stringstream 也可以像 fstream 一樣對一個字串進行輸入輸出。
 
使用串流運算子:

  語法:
 
    #include 
    
    operator<<
    operator>>
   
  和 cin、cout 使用方法一樣。
 
使用 str():

  語法:
 
    #include 

    void str( string s );
    string str();
 
  str() 有兩種使用方式。首先,直接取得目前 stringstream 裡的字串備份,這是要輸出 stringstream 最好用的方法。
   
  範例:
 
    ostringstream stream1;
    stream1 << "Testing!" << endl;
    cout << stream1.str();
   
  第二個用法,str() 可以被用來設定 stringstream 裡的字串。
 
  範例:
 
    istringstream stream1;
    string string1 = "25";
    stream1.str(string1);
   
  str() 如果和 clear() 一起使用的話,可以把 stringstream 清空,以便重新使用這個 stringstream。
 
  範例:
 
    istringstream stream1;
    float num;
   
    // use it once
    string string1 = "25 1 3.235\n1111111\n222222";
    stream1.str(string1);
    while( stream1 >> num )
      cout << "num: " << num << endl;  // displays numbers, one per line
   
    // use the same string stream again with clear() and str()
    string string2 = "1 2 3 4 5  6 7 8 9 10";
    stream1.clear();
    stream1.str(string2);
   
    while( stream1 >> num )
      cout << "num: " << num << endl;  // displays numbers, one per line

標籤:
stringstream
出處:
說明文件出自C++ Reference [管理者: taichunmin (和風信使) ]

本題狀況 本題討論 排行

編號 身分 題目 主題 人氣 發表日期
36891 dsps951202@g ... (昀兒) d098
python
169 2023-08-15 14:34
37836 990293kwi@gm ... (翔越風) d098 121 2023-10-12 18:36
31397 jeter.nice@g ... (唯一) d098
Python 一行解
454 2022-07-28 10:29
29955 thomaslin387 ... (一朵花的洛倫 :)) d098
基操題
511 2022-04-15 21:27
21852 cheung4843@g ... (風思) d098
Java提示
793 2020-07-25 22:52