主要就是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);