C++中的stringstream及其应用

简介: stringstream 将字符串对象与流相关联,允许您从字符串中读取,就好像它是一个流(如 cin)。

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。


作者:鲸落


主页:juejin.cn/user/335976…


stringstream 将字符串对象与流相关联,允许您从字符串中读取,就好像它是一个流(如 cin)。


基本方法是——

clear() — 清除流

str() — 获取和设置其内容存在于流中的字符串对象。

运算符 << — 将字符串添加到 stringstream 对象。

运算符 >> — 从 stringstream 对象中读取内容,


stringstream 类在解析输入时非常有用。


应用:

计算字符串中的单词数

例子:
输入:juejin juejin juejin
输出:3
输入 : juejin Ide
输出:2
复制代码


#include <bits/stdc++.h>
using namespace std;
int countWords(string str)
{
  stringstream s(str);
  string word; 
  int count = 0;
  while (s >> word)
    count++;
  return count;
}
int main()
{
  string s = "juejin juejin juejin juejin "
      "contribution placements";
  cout << " 数量为:" << countWords(s);
  return 0;
}
复制代码


输出:


数量为:6
复制代码


打印字符串中单个单词的频率

输入 : juejin For juejin Quiz juejin Quiz demo demo
输出:对于 -> 1
         juejin -> 3
         Quiz -> 2
         demo -> 2
输入:Word String demo String
输出:demo -> 1
     String -> 2
     Word -> 1 
复制代码


#include <bits/stdc++.h>
using namespace std;
void printFrequency(string st)
{
  // each word it mapped to it's frequency
  map<string, int> FW;
  stringstream ss(st); // Used for breaking words
  string Word; // To store individual words
  while (ss >> Word)
    FW[Word]++;
  map<string, int>::iterator m;
  for (m = FW.begin(); m != FW.end(); m++)
    cout << m->first << " -> "
      << m->second << "\n";
}
int main()
{
  string s = "juejin For juejin Ide";
  printFrequency(s);
  return 0;
}
复制代码

输出:


For -> 1
juejin -> 2
Ide -> 1
复制代码

更多相关内容

在 C++ 中标记字符串

C++ 中的 std::string 类

C/C++ 中的 strrchr() 函数

C++ 中的原始字符串文字及C++ 中的字符串数组(1-2)

C++ 中的字符串数组(5 种不同的创建方式3-5)



目录
相关文章
|
27天前
|
存储 并行计算 安全
C++多线程应用
【10月更文挑战第29天】C++ 中的多线程应用广泛,常见场景包括并行计算、网络编程中的并发服务器和图形用户界面(GUI)应用。通过多线程可以显著提升计算速度和响应能力。示例代码展示了如何使用 `pthread` 库创建和管理线程。注意事项包括数据同步与互斥、线程间通信和线程安全的类设计,以确保程序的正确性和稳定性。
|
5月前
|
存储 安全 C++
C++中的引用和指针:区别与应用
引用和指针在C++中都有其独特的优势和应用场景。引用更适合简洁、安全的代码,而指针提供了更大的灵活性和动态内存管理的能力。在实际编程中,根据需求选择适当的类型,能够编写出高效、可维护的代码。理解并正确使用这两种类型,是掌握C++编程的关键一步。
77 1
|
6月前
|
C++
C++中的封装、继承与多态:深入理解与应用
C++中的封装、继承与多态:深入理解与应用
151 1
|
1月前
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
56 2
|
2月前
|
编译器 C++
【C++核心】函数的应用和提高详解
这篇文章详细讲解了C++函数的定义、调用、值传递、常见样式、声明、分文件编写以及函数提高的内容,包括函数默认参数、占位参数、重载等高级用法。
23 3
|
3月前
|
存储 算法 C++
C++ STL应用宝典:高效处理数据的艺术与实战技巧大揭秘!
【8月更文挑战第22天】C++ STL(标准模板库)是一组高效的数据结构与算法集合,极大提升编程效率与代码可读性。它包括容器、迭代器、算法等组件。例如,统计文本中单词频率可用`std::map`和`std::ifstream`实现;对数据排序及找极值则可通过`std::vector`结合`std::sort`、`std::min/max_element`完成;而快速查找字符串则适合使用`std::set`配合其内置的`find`方法。这些示例展示了STL的强大功能,有助于编写简洁高效的代码。
50 2
|
3月前
|
存储 搜索推荐 Serverless
【C++航海王:追寻罗杰的编程之路】哈希的应用——位图 | 布隆过滤器
【C++航海王:追寻罗杰的编程之路】哈希的应用——位图 | 布隆过滤器
37 1
|
3月前
|
JSON Android开发 C++
Android c++ core guideline checker 应用
Android c++ core guideline checker 应用
|
5月前
|
关系型数据库 MySQL 测试技术
技术分享:深入C++时间操作函数的应用与实践
技术分享:深入C++时间操作函数的应用与实践
47 1