ostringstream istringstream 使用实例——将任意类型转换为字符串,将字符串转换为任意类型

例子:

#include <iostream>
#include <string>
/**
*@brief 将T类型转换为string
*@param val
*@return string
*/
template<class T> string convertToString(const T& val)
{
	ostringstream s;

	//T -> string
	if (!(s << val))
	{
		std::cout << "can't convert form T type to string type !" << std::endl;
	}

	return s.str();
}

/**
*@brief 将string转换为T类型
*@param val
*@return string
*/
template<class T> T convertToString(const string& str)
{
	istringstream s(str);

	T buf;
	//string -> T
	if (!(s >> buf))
	{
		std::cout << "can't convert from string type to T type !" << std::endl;
	}

	return buf;
}
参考:

http://www.cplusplus.com/reference/sstream/ostringstream/

http://www.cplusplus.com/reference/sstream/istringstream/

### C++ 中 `vector` 和 `string` 的使用方法及其相互转换 #### Vector 基本操作 在C++中,`std::vector` 是一种动态数组容器,能够自动调整大小来容纳新元素。相比于内置数组,`vector` 提供了更多的功能和灵活性。 创建并初始化向量: ```cpp #include <iostream> #include <vector> int main() { std::vector<int> v = {1, 2, 3}; // 初始化一个包含三个整数的向量 } ``` 访问和修改向量中的元素可以通过下标运算符完成;此外还支持迭代器遍历整个序列[^3]。 #### String 类型介绍 对于字符串处理而言,在现代C++编程实践中推荐使用标准库提供的类模板 `std::basic_string<char>` (通常写作 `std::string`) 来代替传统的字符指针 (`char *`) 。它不仅提供了丰富的成员函数用于执行各种常见的文本编辑任务,而且更加安全可靠[^1]。 下面是一些常用的字符串操作实例: 查找子串的位置: ```cpp size_t pos = str.find("world"); if(pos != std::string::npos){ std::cout << "Found at position:" << pos; } else{ std::cout << "Not found!"; } ``` 提取指定范围内的子串: ```cpp std::string subStr = str.substr(0,5); // 获取前五个字符组成的子串 ``` #### Vector 与 String 间的转换 当涉及到将一系列离散的数据项组合成单个连续存储单元或将整体拆分为多个部分时,就可能需要用到这两种数据结构之间的互相转变过程。 ##### 将 vector 转换string 可以利用流插入操作符(<<)配合 ostringstream 对象轻松实现这一目标: ```cpp #include <sstream> // ... std::ostringstream oss; for(auto &item : vec){ oss << item << ' '; } std::string result = oss.str(); ``` 这里假设 `vec` 是一个由若干相同类型的对象构成的一维向量,并且这些成分可以直接通过重载后的输出算符被正确表示出来。 ##### 把 string 解析回 vector 同样借助于输入流机制——istringstream 可以方便地解析给定格式化的字符串表达式得到相应的数值列表: ```cpp #include <sstream> //... std::istringstream iss(str); while(getline(iss, word)){ words.push_back(word); } ``` 上述代码片段展示了如何读取一行文字内容直至遇到空白分隔符为止,并依次存入预先声明好的空闲空间内等待后续调用[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值