首页 > 代码库 > stringstream对象的使用
stringstream对象的使用
今天做了一道字符串转化大小写的题,做完之后突然想看一下别人是怎么写的,于是就发现了标题所述的一种用C++流的一种方法:感觉很方便,但是自己虽然学完C++这门课,竟然一(wu)点(li)也(to)不(cao)知(!)道,实在惭愧!!,看了是有必要好好回头在复习研究一番!
以下翻译自:click here
1stringstream对象的使用
#include<sstream> #include<iostream> using namespace std; int main() { string line,word; while(getline(cin,line)) { stringstream stream(line); cout<<stream.str()<<endl; while(stream>>word){cout<<word<<endl;} } return 0; }关于
getline以及相关输入的用法详情可以参考翻译的另一篇:http://blog.csdn.net/u013050857/article/details/43304025
输入:shanghai no1 school 1989
输出:shanghi no1 school 1989
shanghai
no1
school
1989
2stringstream提供的转换和格式化#include<sstream> #include<iostream> using namespace std; int main() { int val1 = 512,val2 =1024; stringstream ss; ss<<"val1: "<<val1<<endl //“val1: "此处有空格,字符串流是通过空格判断一个字符串的结束 <<"val2: "<<val2<<endl; cout<<ss.str(); string dump; int a,b; ss>>dump>>a >>dump>>b; cout<<a<<" "<<b<<endl; return 0; }
输出为:val1: 512
val2: 1024
512 1024
第一处黑体字部分:将int类型读入ss,变为string类型
第二处黑体字部分:提取512,1024保存为int类型。当然,如果a,b声明为string类型,那么这两个字面值常量相应保存为string类型
3其他注意
#include <cstdlib> #include<iostream> #include<sstream> using namespace std; int main() { stringstream ss; string s; ss<<"shanghai no1 school"; ss>>s; cout<<"size of stream = "<<ss.str().length()<<endl; cout<<"s: "<<s<<endl; ss.str(""); cout<<"size of stream = "<<ss.str().length()<<endl; }
输出:
size of stream = 19
s: shanghai
size of stream = 0
代码;‘
//一般写法 #include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <algorithm> using namespace std; char str[1001]; int main() { int n; int i; cin>>n //输入测试次数; getchar(); while(n--) { gets(str); //输入词组; for(i=0; i<strlen(str); i++) //将词组中的小写字母都转为大写字母 if(str[i]>='a'&&str[i]<='z') str[i]-=32; for(i=0; i<strlen(str); i++) { if(i==0&&str[i]!=' ') printf("%c",str[0]); else if(str[i]!=' '&&str[i-1]==' ')//判断是否是一个词组的开头字母; printf("%c",str[i]); } printf("\n"); } return 0; } // stringstream对象 #include <iostream> #include <stdio.h> #include <string> #include <cstring> #include <sstream> using namespace std; char str[1001]; int main() { int n; cin>>n; getchar(); while(n--) { cin.getline(str,1000); stringstream str(str); char a[20]; while(str>>a)cout<<(char)toupper(a[0]); //toupper 函数 :将小写字母转化为大写字母,tolower函数—:将大写字母转换为小写字母 cout<<endl; } return 0; }
stringstream对象的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。