sstream頭文件-getline 函數 和 stringstream函數 和string的常見用法


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中的清空;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM