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