string 和 sstream(c++)

本文介绍了一个简单的C++程序,该程序使用iostream、string和sstream库来读取一行包含空格分隔的整数的文本,并计算这些整数的总和。文章通过示例代码展示了如何创建一个stringstream对象从字符串中读取数据。
#include<iostream>
#include<string>
#include<sstream> 
using namespace std;
int main() {
    string line;
    while(getline(cin,line)){
    	int sum=0,x;
    	cout<<line<<endl;
    	stringstream ss(line);//创建输入流
    	while(ss>>x)sum+=x;
    	cout << sum << endl;	
	}
	return 0;
}

string 和 sstream 都很方便但是很慢要谨用;

### C++中iostream介绍 C++ 的iostream库是标准模板库(STL)中用于输入输出操作的核心组件,提供了流式接口实现与外部设备(如键盘、屏幕、文件等)的数据交互。流是C++中用于表示数据序列的对象,用于在程序外部设备(如键盘、显示器)之间传输数据。流分为输入流(istream)输出流(ostream),它们共同的基类是ios。istream用于输入,ostream用于输出,iostream是两者的派生类,用于同时支持输入输出。`<iostream>`是C++编程中处理标准输入(stdin)、标准输出(stdout)标准错误(stderr)的主要工具。通过`<iostream>`,开发者可以方便地进行格式化输入输出操作,支持各种数据类型,并且具有高度的灵活性可扩展性 [^1][^2][^3]。 ### iostream使用方法 ```cpp #include <iostream> int main() { int num; std::cout << "请输入一个整数: "; std::cin >> num; std::cout << "你输入的整数是: " << num << std::endl; return 0; } ``` 在上述代码中,`std::cout` 是`ostream`类型的对象,用于向标准输出设备(通常是屏幕)输出信息;`std::cin` 是`istream`类型的对象,用于从标准输入设备(通常是键盘)读取信息。 ### C++中sstream介绍 `<sstream>`库提供了字符串流的功能,它允许将数据像操作文件或标准输入输出流一样操作字符串。主要包含三个类:`istringstream`、`ostringstream` `stringstream`。`istringstream` 用于从字符串中读取数据,`ostringstream` 用于向字符串中写入数据,`stringstream` 则既可以读取也可以写入 [^1]。 ### sstream使用方法 ```cpp #include <iostream> #include <sstream> #include <string> int main() { std::string input = "123 45.6"; std::istringstream iss(input); int intValue; double doubleValue; iss >> intValue >> doubleValue; std::cout << "整数: " << intValue << ", 浮点数: " << doubleValue << std::endl; std::ostringstream oss; oss << "结果是: " << intValue + doubleValue; std::string result = oss.str(); std::cout << result << std::endl; return 0; } ``` 在上述代码中,`istringstream` 从字符串中提取整数浮点数,`ostringstream` 将计算结果写入字符串。 ### 两者区别 - **数据来源去向**:`iostream`主要用于程序与外部设备(如键盘、屏幕、文件)之间的数据交互;而`sstream`主要用于程序内部字符串其他数据类型之间的转换操作。 - **功能用途**:`iostream`侧重于标准输入输出文件输入输出操作,方便用户与程序进行交互;`sstream`侧重于字符串处理,例如将字符串拆分为多个数据项,或者将多个数据项组合成一个字符串。 - **使用场景**:当需要从键盘读取用户输入、向屏幕输出信息或进行文件读写时,使用`iostream`;当需要对字符串进行解析、格式化或拼接操作时,使用`sstream`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值