C++请使用sstream实现以下操作,并在main函数中给出测试用例(包括Numeric to string 和 string to numeric) 1)测试string和number(int, double)的转换 2)统计string中每个单词出现的次数
时间: 2024-03-07 21:47:32 浏览: 57
C++中string与int的相互转换实现代码
好的,让我来回答你的问题。
首先,我们需要包含头文件 `<sstream>`。然后,我们可以使用 `ostringstream` 类将数字转换为字符串,使用 `istringstream` 类将字符串转换为数字。
下面是一个参考实现:
```c++
#include <iostream>
#include <sstream>
#include <map>
using namespace std;
// 数字转字符串
template<typename T>
string num2str(T num) {
ostringstream oss;
oss << num;
return oss.str();
}
// 字符串转数字
template<typename T>
T str2num(string str) {
istringstream iss(str);
T num;
iss >> num;
return num;
}
// 统计字符串中每个单词出现的次数
map<string, int> countWords(string str) {
map<string, int> wordCount;
istringstream iss(str);
string word;
while (iss >> word) {
wordCount[word]++;
}
return wordCount;
}
// 测试代码
int main() {
// 测试字符串和数字的转换
int num1 = 123;
double num2 = 3.14;
string str1 = num2str(num1);
string str2 = num2str(num2);
cout << "num1 = " << num1 << ", str1 = " << str1 << endl;
cout << "num2 = " << num2 << ", str2 = " << str2 << endl;
cout << endl;
string str3 = "456";
string str4 = "7.89";
int num3 = str2num<int>(str3);
double num4 = str2num<double>(str4);
cout << "str3 = " << str3 << ", num3 = " << num3 << endl;
cout << "str4 = " << str4 << ", num4 = " << num4 << endl;
cout << endl;
// 测试统计字符串中每个单词出现的次数
string str5 = "the quick brown fox jumps over the lazy dog";
map<string, int> wordCount = countWords(str5);
for (auto it = wordCount.begin(); it != wordCount.end(); it++) {
cout << it->first << " : " << it->second << endl;
}
return 0;
}
```
在这个实现中,我们定义了两个函数 `num2str` 和 `str2num` 分别用于数字转字符串和字符串转数字。这两个函数使用了 `ostringstream` 和 `istringstream` 类。
我们还定义了一个函数 `countWords`,用于统计字符串中每个单词出现的次数。这个函数使用了 `map` 类来保存单词和出现次数的对应关系。
在主函数中,我们分别测试了字符串和数字的转换以及字符串中每个单词出现的次数。
阅读全文