函数合集(1)
- 实现字符串反转、分割和大小写转换功能
- 使用STL算法transform和reverse
(1) stream_fumctions
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;// 1. 字符串反转
string reverseString(string str) {reverse(str.begin(), str.end());return str;
}// 2. 字符串分割
vector<string> splitString(const string& s, char delimiter) {vector<string> tokens;string token;for (char ch : s) {if (ch == delimiter) {if (!token.empty()) {tokens.push_back(token);token.clear();}} else {token += ch;}}if (!token.empty()) tokens.push_back(token);return tokens;
}// 3. 字符串转大写
string toUpper(string str) {transform(str.begin(), str.end(), str.begin(), ::toupper);return str;
}int main() {cout << "反转测试: " << reverseString("Hello") << endl;auto parts = splitString("apple,banana,orange", ',');cout << "分割结果: ";for (const auto& part : parts) cout << part << " ";cout << "\n大写转换: " << toUpper("test") << endl;return 0;
}
(2) maths_functions
#include <iostream>
#include <cmath>
#include <vector>
#include <numeric>
using namespace std;// 1. 计算平均值
double calculateAverage(const vector<double>& nums) {return accumulate(nums.begin(), nums.end(), 0.0) / nums.size();
}// 2. 计算标准差
double calculateStdDev(const vector<double>& nums) {double mean = calculateAverage(nums);double sum = 0.0;for (double num : nums) {sum += pow(num - mean, 2);}return sqrt(sum / nums.size());
}// 3. 生成斐波那契数列
vector<int> generateFibonacci(int n) {vector<int> fib;if (n >= 1) fib.push_back(0);if (n >= 2) fib.push_back(1);for (int i = 2; i < n; ++i) {fib.push_back(fib[i-1] + fib[i-2]);}return fib;
}int main() {vector<double> data = {1.2, 3.4, 5.6, 7.8};cout << "平均值: " << calculateAverage(data) << endl;cout << "标准差: " << calculateStdDev(data) << endl;auto fib = generateFibonacci(10);cout << "斐波那契数列: ";for (int num : fib) cout << num << " ";return 0;
}
(3) file_operations
#include <iostream>
#include <fstream>
#include <vector>
#include <filesystem>
namespace fs = std::filesystem;// 1. 读取文件内容
string readFile(const string& filename) {ifstream file(filename);if (!file) throw runtime_error("无法打开文件");return string((istreambuf_iterator<char>(file)), istreambuf_iterator<char>());
}// 2. 写入文件
void writeFile(const string& filename, const string& content) {ofstream file(filename);if (!file) throw runtime_error("无法写入文件");file << content;
}// 3. 获取目录文件列表
vector<string> listFiles(const string& path) {vector<string> files;for (const auto& entry : fs::directory_iterator(path)) {if (entry.is_regular_file()) {files.push_back(entry.path().filename().string());}}return files;
}int main() {try {// 测试文件读写writeFile("test.txt", "Hello File Operations");cout << "文件内容: " << readFile("test.txt") << endl;// 列出当前目录文件cout << "目录文件列表:\n";for (const auto& file : listFiles(".")) {cout << "- " << file << endl;}} catch (const exception& e) {cerr << "错误: " << e.what() << endl;}return 0;
}