小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
作者:鲸落
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++ 中的字符串数组(1-2)