关于C++中string、char*和char[]的转换问题

主要就是string,C-风格字符串,整型,浮点型,字符间的问题

1、 利用sstream头文件中的输入流对象istringstream   获得文本格式对应的整数、字符或者浮点数

istringstream instr(string)
instr>>int>>chr;

采用这种方法可以逐个读取字符串中的字符、整数等等。

多元素推荐使用该方法,因为输入流可以越过空字符。

2、利用sstream头文件中的输出流对象ostringstream  获得整数、字符、浮点数或者拼接时候的文本格式string

ostringstream outstr;
outstr<<int<<''<<char;
outstr.str();

可以获得int类型和字符类型或者浮点数的文本表示

3、利用string头文件中string类的方法str.c_str()方法 或者 str.data()   获得string对应的c-风格字符串因为是对象对应的内容所以不能随便修改 const char*

_NODISCARD _Ret_z_ const _Elem * c_str() const noexcept
		{	// return pointer to null-terminated immutable array
		return (this->_Get_data()._Myptr());
		}

4、如果只有一个整数或浮点数可以利用string头文件中函数 stoi,stol之类的实现 获得文本对应的整数或浮点数,如果首字符不对 将出错

inline long stol(const string& _Str, size_t *_Idx = nullptr,
	int _Base = 10)

如果要拼接,可以使用string类重载了的+/ >/<运算符;(<、>这些是返回bool类型,然后用的成员函数是compare(),该函数返回的是1,0,-1这些)

当然c-风格字符串使用 strcat,strcmp(返回1,0,-1)这些。

第一个参数是目标string,第二个参数是第一个不符合要求的字符出现的偏移量,第三个参数是基数类型

与之相对应的是重载的

_NODISCARD inline string to_string(long _Val)
	{	// convert long to string
	return (_Integral_to_string<char>(_Val));
	}

对应的有c风格字符串的内容获得对应的整数或浮点数

_Check_return_                    _ACRTIMP double    __cdecl atof   (_In_z_ char const* _String);
_Check_return_ _CRT_JIT_INTRINSIC _ACRTIMP int       __cdecl atoi   (_In_z_ char const* _String);
_Check_return_                    _ACRTIMP long      __cdecl atol   (_In_z_ char const* _String);
_Check_return_                    _ACRTIMP long long __cdecl atoll  (_In_z_ char const* _String);
_Check_return_                    _ACRTIMP __int64   __cdecl _atoi64(_In_z_ char const* _String);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值