2017-08-12 19:50:50
writer:pprp
getline函數可以讀入一行的字符,不論有沒有空格
第一個參數,流
第二個參數 ,將流讀入的地方
第三個參數,當讀到某個字符的時候停止;
#include <iostream> #include <string> #include <sstream>
using namespace std; int main() { string line; while(getline(cin,line) { int sum = 0, x; stringstream ss(line); while(ss>>x) { sum += x; } cout << sum << endl; } return 0; }
stringstream函數是C++提供的另一個字串型的串流(stream)物件,和之前學過的 iostream、fstream 有類似的操作方式
stringstream是字符串流,經常被我用來作數據切分或者類型轉化;
主要是用在將一個字串分割,可以先用 clear( )以及 str( ) 將指定字串設定成一開始的內容,再用 >> 把個別的資料輸出,例如:
string s; stringstream ss; int a, b, c; getline(cin, s); ss.clear(); ss.str(s); ss >> a >> b >> c;
也可以在使用之前直接進行初始化
getline(cin , line);
stringstream ss(line);
補充:string的某些用法;
string常用的方法是find和substr;
string str = "aaaaddddssdfsasdf";
size_t pos = str.find("ssdf", 3);
string str2 = str.substr(pos, 5);
find函數從str的第3個位置查起,找到ssdf這個子串后,返回子串的位置。而substr函數從pos位置開始,截取5個字符,賦值給str2。也就是說,str2之后的內容將是ssdfs
類型轉化:
string到int的轉換
stringstream stream;
string result=”10000”;
int n=0;
stream << result;
stream >> n;//n等於10000
類型轉化:int 到 string 的轉化
#include <string> #include <sstream> #include <iostream>
int main() { std::stringstream stream; std::string result; int i = 1000; stream << i; //將int輸入流
stream >> result; //從stream中抽取前面插入的int值
std::cout << result << std::endl; // print the string "1000"
}
當進行多次類型轉化的時候,需要用到clear函數;將stringstream中的清空;