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)



目录
相关文章
|
21天前
|
存储 Java C++
C++ 引用和指针:内存地址、创建方法及应用解析
C++中的引用是现有变量的别名,创建时需用`&`运算符,如`string &meal = food;`。指针存储变量的内存地址,使用`*`创建,如`string* ptr = &food;`。引用必须初始化且不可为空,而指针可初始化为空。引用在函数参数传递和提高效率时有用,指针适用于动态内存分配和复杂数据结构操作。选择使用取决于具体需求。
38 9
|
25天前
|
存储 C++ 容器
C++STL(标准模板库)处理学习应用案例
【4月更文挑战第8天】使用C++ STL,通过`std:vector`存储整数数组 `{5, 3, 1, 4, 2}`,然后利用`std::sort`进行排序,输出排序后序列:`std:vector<int> numbers; numbers = {5, 3, 1, 4, 2}; std:sort(numbers.begin(), numbers.end()); for (int number : numbers) { std::cout << number << " "; }`
21 2
|
25天前
|
C++
C++命名空间学习应用案例
C++中的命名空间示例:通过`my_namespace`防止命名冲突,包含`print_message()`函数,在`main()`中调用时需加上命名空间前缀`my_namespace::`。
14 3
|
25天前
|
编译器 C++
C++语言预处理器学习应用案例
【4月更文挑战第8天】C++预处理器包括条件编译、宏定义和文件包含等功能。例如,条件编译用于根据平台选择不同代码实现,宏定义可简化常量和变量名,文件包含则用于整合多个源文件。示例中展示了如何使用`#ifdef`等指令进行条件编译,当`DEBUG`宏定义时,`PRINT_LOG`会打印调试信息,否则不执行。
13 1
|
3天前
|
Linux 程序员 图形学
C++语言在现代软件开发中的应用与实践
C++语言在现代软件开发中的应用与实践
12 2
|
4天前
|
存储 程序员 C语言
深入理解C++:从语言特性到实践应用
深入理解C++:从语言特性到实践应用
15 3
|
4天前
|
运维 Serverless Go
Serverless 应用引擎产品使用之在阿里云函数计算中c++模板,将编译好的C++程序放进去部署如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
9 1
|
8天前
|
C++
C++:深度解析与实战应用
C++:深度解析与实战应用
8 1
|
8天前
|
安全 vr&ar C++
C++:编程语言的演变、应用与最佳实践
C++:编程语言的演变、应用与最佳实践
|
9天前
|
设计模式 存储 算法
C++从入门到精通:3.7阅读和理解开源项目——在实际项目中应用C++编程技巧和规范
C++从入门到精通:3.7阅读和理解开源项目——在实际项目中应用C++编程技巧和规范