stringiostream的用法
生活随笔
收集整理的這篇文章主要介紹了
stringiostream的用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
stringiostream可以用于不同類型的拼接
簡單操作(代碼):
#include<bits/stdc++.h> using namespace std; int main(){char a[] = "qwer";int n = 123;stringstream ss;ss << n << a <<12.32;cout << ss.str() << endl; //123qwer12.32string t;ss >> t; //錯誤寫法:t << ss; stringstream始終放在前面 cout << t; //123qwer12.32 從stringiostram中讀取是以空格、回車分隔 ss.str(""); //清空操作 }附上一道題(牛客練習賽15A):
題目鏈接
當吉姆刷到牛客練習賽12 B.迷宮這題時,為了紀錄二維迷宮中,每一步可以走的四個方向的位移量,寫出的代碼包含了以下段落: int offset[4][2] = { (1, 0), (0, 1), (-1, 0), (0, -1) }; 眼尖的讀者們應該很快就發現這段程序碼哪里出錯了吧XD正確的寫法應如下: int offset[4][2] = { {1, 0}, {0, 1}, {-1, 0}, {0, -1} }; 吉姆誤把大括號打成了小括號于是實際上的四個位移量被記錄成:(0,1),(0,-1),(0,0),(0,0) 經過這次經驗,吉姆才知道原來逗號(comma)也是C / C ++的一種運算符(operator)。 吉姆開始好奇,給你一個只含數字,小括號,逗號的合法運算式,能否快速得到此算式的結果呢?請幫吉姆寫一個計算這類的算式的程序吧? Note: 不熟悉逗號運算符的人可以參考cppreference.com 里的說明。 以下也給出簡易的逗號運算符的定義:(若不小心與C++的規章有所出入,請以下列四條為準): 1.對于所有滿足-231≤ x ≤231-1的整數x本身都是個合法的運算式,且此運算式的值就是該數字。(若x不是0,數字部分就不能以0開頭,若是0,一定恰只有一個0.) 2.若E1,E2,...,En都是合法的運算式,則E1,E2,...,En也是個合法的運算式,并且其值為En的值。 3.若E是個合法的運算式,則(E)也是個合法的運算式,其值為E的值。 無法用上列1,2,3項的關系推出的運算式,都是不合法的。 舉例來說514,1,2,(-2147483648,2,4),(((0))),(1),(2)都是此題中合法的運算式,但0514,-02,(),(23,43))都是不合法的。輸入描述: 輸入僅有一行,包含一個字串e,是一個僅由左右小括號'(',')',逗號',',以及整數所組成的合法運算式。 輸出描述: 輸出一行包含一個整數,代表輸入所提供的運算式的運算結果。 示例1 輸入 (5,-14) 輸出 -14 示例2 輸入 ((406,(0,2147483647,-2147483648))) 輸出 -2147483648 備注: 1≤|e|≤100 e中所有整數的范圍為-231≤ x ≤231-1 e滿足Note里提到的合法運算式 特別強調,e不包含' '(空格)題意:給一個字符串,僅有整數,逗號,括號組成,找出最后一個逗號后面的值。
思路:由于本題保證測試資料一定是合法算式,所以我們不用真的去解析算式的括號結構,而是直接去找字串中出現在最右邊的數字就行了。如使用的程序語言是C++,我們可以把字串讀入后,把括號和逗號都變成空白字元,最后再利用stringstream把新字串再用數字讀入,讀到最后一個數字就是答案
#include<bits/stdc++.h> using namespace std; int main (){ string s;while(cin >> s){int len = s.length();for(int i = 0; i < len; i++){if(s[i] == '(' || s[i] == ')' || s[i] == ',')s[i]=' ';}stringstream ss(s); //將值s賦給ss,也可以 ss << s; int n; //以數字的形式讀取 while(ss >> n);cout << n << endl;// string str; //以字符串的形式讀取 // while(ss >> str); // cout << str << endl;}return 0; }python版本
正則
import re print(re.findall(r'-?\d+', input())[-1])(不會正則...)
s = input() //出去括號,只剩逗號 s = s.replace("(","") s = s.replace(')','') i = s.rfind(',') //找到最后一個逗號 print(s[i+1:])總結
以上是生活随笔為你收集整理的stringiostream的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU - 1027 全排列
- 下一篇: 埃森哲杯第十六届上海大学程序设计联赛春季