string转小写的各种实现方式

发布时间:2023-05-18

一、string转小写字母

string转小写字母是一项常见的字符串操作任务。在C++中,我们可以通过循环遍历字符串并按照ASCII码进行位移的方式来实现。

#include <string>
#include <algorithm>
using namespace std;
void to_lower(string& str) {
    transform(str.begin(), str.end(), str.begin(), ::tolower);
}
int main() {
    string s = "HELLO WORLD";
    to_lower(s);
    cout << s << endl;
    return 0;
}

上述代码中,我们使用了<algorithm>头文件中的transform()函数来实现遍历操作,使用::tolower来进行小写字母的转换。

二、string转换成小写

除了可以遍历字符串进行小写转换操作,C++中还提供了许多高效的库函数来实现这一目标。

#include <string>
#include <locale>
using namespace std;
string to_lower(string str) {
    transform(str.begin(), str.end(), str.begin(), ::tolower);
    return str;
}
string to_lower_case(string str) {
    locale loc;
    for (int i = 0; i < str.size(); ++i) {
        str[i] = tolower(str[i], loc);
    }
    return str;
}
int main() {
    string s = "HELLO WORLD";
    cout << to_lower(s) << endl;
    cout << to_lower_case(s) << endl;
    return 0;
}

其中,我们使用了<locale>标准库中的tolower()函数来实现字符的小写转换。

三、string转小写函数

依靠Lambda表达式来实现string转小写函数:

#include <string>
#include <algorithm>
using namespace std;
string tolower(string s) {
    transform(s.begin(), s.end(), s.begin(),
        [](unsigned char c){ return tolower(c); });
    return s;
}
int main() {
    string s = "HELLO WORLD";
    cout << tolower(s) << endl;
    return 0;
}

上述代码中使用了lambda表达式来实现对字符的小写转换。

四、C++ string 转小写

如果使用C++ string来实现小写转换,我们可以直接使用在<algorithm>头文件中定义的transform()函数,将每个字符转换为小写字符即可:

#include <string>
#include <algorithm>
using namespace std;
string tolower(string s) {
    transform(s.begin(), s.end(), s.begin(), ::tolower);
    return s;
}
int main() {
    string s = "HELLO WORLD";
    cout << tolower(s) << endl;
    return 0;
}

五、std::string 转小写

C++标准库中的std::string类中也有小写转换函数,我们可以使用transform()函数和tolower()函数来实现:

#include <string>
#include <locale>
using namespace std;
string tolower(string s) {
    locale loc;
    for (int i = 0; i < s.size(); ++i) {
        s[i] = tolower(s[i], loc);
    }
    return s;
}
int main() {
    string s = "HELLO WORLD";
    cout << tolower(s) << endl;
    return 0;
}

六、string大写转小写

和小写转大写很类似,只需要将toupper()函数替换为tolower()函数即可:

#include <string>
#include <algorithm>
using namespace std;
string tolower(string s) {
    transform(s.begin(), s.end(), s.begin(), ::tolower);
    return s;
}
string toupper(string s) {
    transform(s.begin(), s.end(), s.begin(), ::toupper);
    return s;
}
int main() {
    string s = "HELLO WORLD";
    cout << tolower(s) << endl;
    cout << toupper(s) << endl;
    return 0;
}

七、string转list

在C++中,如果我们需要将一个字符串按照某个特定的分隔符进行分割,并将分割后的内容存入一个list中,可以使用下面的代码:

#include <list>
#include <sstream>
#include <string>
using namespace std;
list<string> split(const string& str, char delimiter = ' ') {
    list<string> result;
    stringstream ss(str);
    string item;
    while (getline(ss, item, delimiter)) {
        result.push_back(item);
    }
    return result;
}
int main() {
    string s = "hello world";
    list<string> l = split(s);
    for (auto& item: l) {
        cout << item << endl;
    }
    return 0;
}

在上述代码中,我们使用了std::stringstreamstd::getline()函数来实现字符串分割的操作。可以根据需要设定分隔符来分割字符串。

八、string转integer

如果我们需要将一个字符串转换为整数,可以使用C++标准库提供的stol()函数:

#include <iostream>
#include <string>
using namespace std;
int main() {
    string s = "123";
    long res = stol(s);
    cout << res << endl;
    return 0;
}

九、string转byte

在C++中,同样可以将一个字符串表示的信息转换为二进制数据。一个字节可以被表示为char类型。我们可以使用static_cast()函数将其转换为char类型:

#include <iostream>
#include <string>
using namespace std;
int main() {
    string s = "A";
    char res = static_cast<char>(s.data()[0]);
    cout << (int)res << endl;
    return 0;
}

在上述代码中,我们将string类型的数据转换为char类型,并强制转换为整数输出。