字符串拼接

使用 **ostream****<<**运算符实现

  1. int main() {
  2. std::ostringstream oss;
  3. oss << "hello" << " " << "world";
  4. std::cout << oss.str();
  5. }
  6. // output: hello world

字符串数字相互转换

使用 **istream****>>**操作符实现
该方法的说明:

  • 方法会「贪婪」地从流中提取内容,直到提取失败
  • 提取时会忽略后续的空格,换行符等
  • 如果提取失败,会将 iostat设置为 failbit(似乎是),可以通过 clear()方法将 iostate恢复为 goodbit

使用示例:

  1. int main() {
  2. float f;
  3. std::stringstream ss{"123 456 \n\r\t 78.89 . 111"};
  4. while (ss >> f)
  5. std::cout << f << std::endl;
  6. }
  7. // output: 123 456 78.89

使用 **string**来实现

  1. int main() {
  2. // 字符串转化为数字
  3. int num = std::stoi("233");
  4. std::cout << num << std::endl;
  5. // 数字转化为字符串
  6. std::string str = std::to_string(233);
  7. std::cout << str << std::endl;
  8. }

字符串切分

使用 **std::getline**来实现
getline(input_stream, output_str, delim_char)的参数分别表示:

  • input_stream是要从中读取内容的流
  • output_string是存放输出结果的字符串
  • delim_char是分割字符,默认是「换行符**widen('\n')**
  • 返回:返回 input_stream本身

这个函数的作用是:从「流」中取出字符串,直到遇到了「delim_cahr」为止。

使用示例:将字符串按照.进行切分

  1. int main() {
  2. std::stringstream ss{"192.168.1.1"};
  3. std::string str;
  4. while (std::getline(ss, str, '.'))
  5. std::cout << str << std::endl;
  6. }
  7. // output: 192 168 1 1

使用 **string****find****substr**实现
示例代码:

  1. int main() {
  2. std::string s = "hello--world";
  3. std::string delim = "--";
  4. auto start = 0U;
  5. auto end = s.find(delim);
  6. while (end != std::string::npos) {
  7. std::cout << s.substr(start, end - start) << std::endl;
  8. start = end + delim.length();
  9. end = s.find(delim, start);
  10. }
  11. std::cout << s.substr(start, end);
  12. }