將字串從流中讀入,字串的轉換
阿新 • • 發佈:2019-02-05
字串從流中讀入使用起來非常方便,特別是在高精度演算法當中,不過效率不可觀,應當酌情使用,下面介紹兩種方法
C++語言
stringstream
標頭檔案:#include<sstream>
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
string s;
while(getline(cin,s))
{
int x;
stringstream ss(s);
while(ss>>x)
cout<<x<<endl;
}
return 0;
}
C語言
sscanf
標頭檔案:#include<cstdio>
定義函式 int sscanf (const char *str,const char * format,........);
函式說明
sscanf()會將引數str的字串根據引數format字串來轉換並格式化資料。格式轉換形式請參考scanf()。轉換後的結果存於對應的引數內。
返回值
成功則返回引數數目,失敗則返回-1,錯誤原因存於errno中。 返回0表示失敗 否則,表示正確格式化資料的個數 例如:sscanf(str,"%d%d%s", &i,&i2, &s); 如果三個變成都讀入成功會返回3。 如果只讀入了第一個整數到i則會返回1。證明無法從str讀入第二個整數。
#include<cstdio> #include<cstring> #include<iostream> using namespace std; int main() { int x; string a; while(cin>>a) { // sscanf(a.c_str(),"%d",&x); // printf("%d\n",x); int len=a.size(); for(int i=0;i<len;i+=5) { sscanf(a.substr(i,min(len-i,5)).c_str(),"%d",&x); printf("%d\n",x); } } return 0; }