请用c++帮我写出使用sting字符串来实现CSing中的 format,mid,trimLeft,trimRight,makeupper,makelowerf方法
时间: 2024-03-02 21:51:20 浏览: 80
详解C++的String类的字符串分割实现
5星 · 资源好评率100%
下面是使用`std::string`字符串实现`format`、`mid`、`trimLeft`、`trimRight`、`makeupper`和`makelower`方法的示例代码:
```
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
// 格式化输出字符串
string format(const char* format, ...)
{
va_list args;
va_start(args, format);
char buffer[256];
vsnprintf(buffer, sizeof(buffer), format, args);
va_end(args);
return buffer;
}
// 截取字符串
string mid(const string& str, int start, int length)
{
return str.substr(start, length);
}
// 去除左侧空白字符
string trimLeft(const string& str)
{
string::const_iterator it = find_if(str.begin(), str.end(), [](char c) { return !isspace(c); });
return string(it, str.end());
}
// 去除右侧空白字符
string trimRight(const string& str)
{
string::const_reverse_iterator rit = find_if(str.rbegin(), str.rend(), [](char c) { return !isspace(c); });
return string(str.begin(), rit.base());
}
// 将字符串转换为大写
string makeUpper(const string& str)
{
string result = str;
transform(result.begin(), result.end(), result.begin(), ::toupper);
return result;
}
// 将字符串转换为小写
string makeLower(const string& str)
{
string result = str;
transform(result.begin(), result.end(), result.begin(), ::tolower);
return result;
}
int main()
{
string str = " Hello, World! ";
cout << "Original String: " << str << endl;
cout << "Trimmed String: " << trimLeft(trimRight(str)) << endl;
cout << "Upper Case String: " << makeUpper(str) << endl;
cout << "Lower Case String: " << makeLower(str) << endl;
cout << "Substring: " << mid(str, 3, 5) << endl;
cout << "Formatted String: " << format("%s %d", "Hello", 123) << endl;
return 0;
}
```
在上述代码中,`format`函数使用`vsnprintf`函数来实现格式化输出字符串,`mid`函数使用`substr`函数来实现截取子字符串,`trimLeft`和`trimRight`函数使用`find_if`函数来查找第一个非空白字符,并使用`string`构造函数和迭代器来实现去除空白字符的操作,`makeUpper`和`makeLower`函数使用`transform`函数和`::toupper`和`::tolower`函数来实现字符串大小写转换的操作。
阅读全文