C++中的stringstream及其应用

440 阅读1分钟

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

作者:鲸落
主页: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)


有什么问题可以在评论区告诉我,我会第一时间回复大家,感谢您的阅览。