C++字符串输入输出转换

<sstream>输入输出控制类

  • istringstream类:用于执行C++风格的串流的输入操作
  • ostringstream类:用于执行C风格的串流的输出操作
  • strstream类:同时可以支持C风格的串流的输入输出操作


字符串输入流(istringstream)

  • 用于从字符串读取数据,支持ifstream类的除open、close外的所有操作

字符串输出流( ostringstream )

  • 用于构造字符串,支持ofstream类的除open、close外的所有操作




#include<iostream>
#include<sstream>
using namespace std;
template<class T>
inline T Fstr(const string &str)
{
	T v;
	istringstream is(str);		//创建字符串输入流
	is>>v;		//从字符串输入流中读取变量v
	return v;   //返回变量v
}
template<class T>
inline string Tstr(const T &v)
{
    ostringstream os;		//创建字符串输出流
    os<<v;			//将变量v的值写入字符串流
    return os.str();		//返回输出流生成的字符串
}
int main(void)
{
	int a;
	double b;
	string str;
	a = Fstr<int>("5 7.23");
	b = Fstr<double>("1.252");
	cout<<a<<" "<<b<<endl;
	str = Tstr(a);
	cout<<str<<" ";
	str = Tstr(b);
	cout<<str<<endl;
	return 0;
}

### C++ 字符串输入输出方法 在C++中,`string`类型的输入和输出可以通过多种方式进行。最常用的方式是利用标准库中的流操作来读取和写入字符串。 #### 使用 `cin` 和 `cout` 对于简单的控制台输入输出,可以使用`std::cin`和`std::cout`配合`std::string`来进行基本的操作: ```cpp #include <iostream> #include <string> int main(){ std::string str; // 输出提示信息并等待用户输入 std::cout << "请输入一个字符串:" ; std::getline(std::cin, str); // 获取整行输入 // 显示接收到的信息 std::cout << "您输入的是:" << str << '\n'; } ``` 此代码片段展示了如何通过`std::getline()`函数获取多词句式的完整输入[^1]。 #### 文件I/O 除了屏幕交互外,还可以借助于文件流对象如`std::ifstream`(用于读取)以及`std::ofstream`(用于写入),实现对磁盘上文本文件的数据存取功能: ```cpp #include <fstream> // 包含文件流定义 #include <sstream> // 支持字符串流 #include <string> void writeToFile(const char* filename){ std::ofstream outFile(filename); if(outFile.is_open()){ outFile << "这是一个测试。\n"; outFile.close(); } } void readFromFile(const char* filename){ std::ifstream inFile(filename); std::stringstream buffer; if(inFile){ buffer << inFile.rdbuf(); // 将整个文件内容复制到缓冲区 std::string content = buffer.str(); std::cout << "文件内容如下:\n" << content; } inFile.close(); } ``` 上述例子说明了怎样把一段文字保存至指定路径下的新创建文档里,并能够再次打开该位置上的资源以便查看其中所存储的内容[^2]. #### 利用 `stringstream` 当涉及到更复杂的格式化需求时,则可考虑采用`std::stringstream`作为中介容器完成相应的转换工作。它允许像对待常规字符序列那样处理数值型或其他自定义类型的实例。 ```cpp #include <iomanip> // 控制格式化的辅助工具 #include <sstream> // 提供字符串流支持 #include <string> // 转换数字为带特定宽度填充0的字符串表示形式 std::string numberToString(int num){ std::ostringstream oss; oss << std::setw(8) << std::setfill('0') << num; return oss.str(); } ``` 这段程序示范了一个将整形数化为固定长度且左侧补零后的ASCII编码串的过程[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值