当前位置:首页 > 记忆回溯 > 正文内容

stringstream用法整理

一部分转载自巴哈姆特:https://home.gamer.com.tw/creationDetail.php?sn=4114818

stringstream是一個C++底下的類別,專門拿來讀取字串並且處理,很多時候拿來做字串的切割,或者是int跟string類別之間的轉換。

头文件(其实竞赛中多数是直接万能头文件的 xD)

#include<sstream>

●把int型態的數字轉成string

此時的stringstream就像個橋樑,可以負責當中間轉換的部分。

stringstream提供了>>與<<運算子來讀取或寫入:

>>代表寫入stringstream中,<<代表從stringstream拿出。

#include <sstream>
using namespace std;
int main()
{
    stringstream s1;
    int number =1234;
    string output;//要把number轉成字串型態的容器
    
    cout<<"number="<<number<<endl;//顯示number=1234;
    
    s1<<number; //將以int宣告的number放入我們的stringstream中
    s1>>output;
    
    cout<<"output="<<output<<endl;//顯示output=1234;
}

值得注意的是我們兩行顯示都是1234但是他的資料型態卻已經不一樣了,第一個是int的型態,第二行則是string的型態。

●相反的stringstream也可以將string轉成int

#include <sstream>
using namespace std;
int main()
{
    stringstream string_to_int;
    string s1="12345";
    int n1;

    string_to_int<<s1;
    //也可以使用string_to_int.str(s1);
    //或者 s1=string_to_int.str();
    
    string_to_int>>n1;

    cout<<"s1="<<s1<<endl;//s1=12345
    cout<<"n1="<<n1<<endl;//n1=12345
    
}

看一道题:

输入的第一行有一个数字 N 代表接下來有 N 行数字,每一行有若干个的整数(最多 20 个,每行最多 200 个字符),请你输出每一行数字的和。

输入格式

第一行一个整数 N

接下来输入 N 行,每行若干个整数。

输出格式

输出 N 行,每行一个整数表示。

image.png

#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
using namespace std;

int main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int N;
	cin>>N;
	stringstream ss;
	string s;
	getline(cin,s);
	for(int i=0;i<N;i++)
	{
		int a,sum=0;
		getline(cin,s);
		ss.clear();
		ss.str(s);
		while(1)
		{
			ss >> a;
			if(ss.fail())break;
			sum += a;
		}
		cout<<sum<<'\n';
	}
	return 0;
}


标签: stringstreamC++
返回列表

上一篇:Mixly编译提示头文件不存在的解决方案

没有最新的文章了...

“stringstream用法整理” 的相关文章

PHP 程式碼風格PSR

PSR-1:基本程式寫作標準1. 總覽檔案只能使用 <?php 和 <?= 標籤檔案字元編碼只能用 UTF-8 檔首無 BOM檔案應該只宣告符號 (class、function、constant)或是造成副作用(例如產生輸出、修改 .ini 檔之類)兩者擇一不應該兩個都做Namespac...

两个物块动量定理的二级结论整理

还是那样子,死记硬背没用这就是纯纯算数的活儿,理儿都摆在这了。一个经典的模型是一个物块以速度v撞向另外一个静止的物块,符合动量守恒:思考题:两个滑块相互碰撞,仍然是理想模型,动量守恒能量守恒,推导v1/v2...

go gin框架实现限流

接手一个项目,甲方希望在项目中实现指定用户的限流,这需要我们在go项目中实现一个限流器。限流器的实现有很多经典的思想,不过令牌桶的思路简单,运行效率高,它是以恒定的速度往木桶里加入令牌,木桶满了则不再加入令牌。服务收到请求时尝试从木桶中取出一个令牌,如果能够得到令牌则继续执行后续的业务逻辑。如果没有...

AMD Ryzen Windows睡死问题解决

更新AMD芯片组驱动(不分任何笔记本厂家): https://seaou.lanzouw.com/iQL0V2m7wnuh...

数据结构——堆(Heap)大根堆、小根堆

转载:https://www.cnblogs.com/wangchaowei/p/8288216.htmlHeap是一种数据结构具有以下的特点:1)完全二叉树;2)heap中存储的值是偏序;Min-heap: 父节点的值小于或等于子节点的值;Max-heap: 父节点的值大于或等于子节点的值;堆的存...

前缀和 & 差分

C++ 标准库中实现了前缀和函数 std::partial_sum,定义于头文件 <numeric> 中。一个经典的例题:暴力当然直接TLE//这段代码是能拿50分的,大规模会有超时问题 //没有很好的利用前缀和 #include<bits/stdc++.h> usin...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。