字符串拼接
使用 **ostream**的 **<<**运算符实现
int main() {std::ostringstream oss;oss << "hello" << " " << "world";std::cout << oss.str();}// output: hello world
字符串数字相互转换
使用 **istream**的 **>>**操作符实现
该方法的说明:
- 方法会「贪婪」地从流中提取内容,直到提取失败
- 提取时会忽略后续的空格,换行符等
- 如果提取失败,会将
iostat设置为failbit(似乎是),可以通过clear()方法将iostate恢复为goodbit
使用示例:
int main() {float f;std::stringstream ss{"123 456 \n\r\t 78.89 . 111"};while (ss >> f)std::cout << f << std::endl;}// output: 123 456 78.89
使用 **string**来实现
int main() {// 字符串转化为数字int num = std::stoi("233");std::cout << num << std::endl;// 数字转化为字符串std::string str = std::to_string(233);std::cout << str << std::endl;}
字符串切分
使用 **std::getline**来实现getline(input_stream, output_str, delim_char)的参数分别表示:
input_stream是要从中读取内容的流output_string是存放输出结果的字符串delim_char是分割字符,默认是「换行符**widen('\n')**」- 返回:返回
input_stream本身
这个函数的作用是:从「流」中取出字符串,直到遇到了「delim_cahr」为止。
使用示例:将字符串按照.进行切分
int main() {std::stringstream ss{"192.168.1.1"};std::string str;while (std::getline(ss, str, '.'))std::cout << str << std::endl;}// output: 192 168 1 1
使用 **string**的 **find**和 **substr**实现
示例代码:
int main() {std::string s = "hello--world";std::string delim = "--";auto start = 0U;auto end = s.find(delim);while (end != std::string::npos) {std::cout << s.substr(start, end - start) << std::endl;start = end + delim.length();end = s.find(delim, start);}std::cout << s.substr(start, end);}
