C++字符串和C字符串的对比
(1)C语言严格说没有字符串的概念,C字符串其实就是字符数组或字符指针
(2)C++和之后的java等都有字符串,本质是一个class
(3)C++字符串的优势是标准库自带可用于字符串的各种处理算法和方法
(4)C++实际开发中建议使用C++字符串而不是沿用C式字符串
字符串string类使用
std::string str = "Hello, World!";
// 使用 size() 获取字符串长度
std::cout << "Size of the string: " << str.size() << std::endl;
// 使用 length() 也可以获取字符串长度
std::cout << "Length of the string: " << str.length() << std::endl;
// 获取字符串的最大容量
std::cout << "Max size of the string: " << str.max_size() << std::endl;
// 调整字符串大小为 10
str.resize(10);
std::cout << "Resized string: " << str <<"|"<< std::endl; // 输出 "Hello, Wor"
// 获取当前字符串的容量
std::cout << "Capacity of the string: " << str.capacity() << std::endl;
// 请求字符串的容量至少为 20
str.reserve(20);
std::cout << "Capacity after reserve: " << str.capacity() << std::endl;
// 尝试减少字符串的容量
str.shrink_to_fit();
std::cout << "Capacity after shrinking: " << str.capacity() << std::endl;
// 清空字符串
str.clear();
std::cout << "String after clear: " << str << std::endl; // 输出 ""
// 检查字符串是否为空
if (str.empty()) {
std::cout << "String is empty." << std::endl;
} else {
std::cout << "String is not empty." << std::endl;
}
std::string str = "12345";
int num = std::stoi(str);
std::cout << "The integer value is: " << num << std::endl;
str = "9876543210";
long int num1 = std::stol(str);
std::cout << "The long integer value is: " << num1 << std::endl;
str = "4294967295"; // Max value of unsigned int
unsigned int num2 = std::stoul(str);
std::cout << "The unsigned integer value is: " << num2 << std::endl;
str = "9223372036854775807"; // Max value of long long
long long num3 = std::stoll(str);
std::cout << "The long long value is: " << num3 << std::endl;
str = "18446744073709551615"; // Max value of unsigned long long
unsigned long long num4 = std::stoull(str);
std::cout << "The unsigned long long value is: " << num4 << std::endl;
str = "3.14159";
float num5 = std::stof(str);
std::cout << "The float value is: " << num5 << std::endl;
str = "2.718281828459045";
double num6 = std::stod(str);
std::cout << "The double value is: " << num6 << std::endl;
str = "1.4142135623730950488";
long double num7 = std::stold(str);
std::cout << "The long double value is: " << num7 << std::endl;
int num8 = 12345;
std::string str1 = std::to_string(num8);
std::cout << "The string representation is: " << str1 << std::endl;
double num9 = 3.141592653589793238;
std::wstring wstr = std::to_wstring(num9);
std::wcout << "The wide string representation is: " << wstr << std::endl;
return 0;
std::string str = "Hello";
// 使用 operator+= 追加字符串
str += ", World!";
// 使用 append 方法追加字符串
str.append(" How are you?");
std::cout << "String after append: " << str << std::endl;
// 使用 push_back 方法追加字符 '!'
str.push_back('!');
std::cout << "String after push_back: " << str << std::endl;
// 使用 insert 方法在位置 5 插入字符串 ", World"
str.insert(5, ", World");
std::cout << "String after insert: " << str << std::endl;
// 使用 erase 方法从位置 7 开始删除 6 个字符
str.erase(7, 6); // 删除 ", World"
std::cout << "String after erase: " << str << std::endl;
// 使用 replace 方法替换从位置 7 开始的 5 个字符为字符串 "Universe"
str.replace(7, 5, "Universe");
std::cout << "String after replace: " << str << std::endl;
// 使用 pop_back 方法删除最后一个字符 '!'
str.pop_back();
std::cout << "String after pop_back: " << str << std::endl;
// 使用 assign 方法将字符串内容替换为 "Goodbye"
str.assign("Goodbye");
std::cout << "String after assign: " << str << std::endl;
std::string str1 = "Hello";
std::string str2 = "World";
// 使用 swap 方法交换两个字符串的内容
str1.swap(str2);
std::cout << "String 1 after swap: " << str1 << std::endl;
std::cout << "String 2 after swap: " << str2 << std::endl;
std::string str = "Hello, World!";
// 使用 c_str 方法获取 C 字符串等价物的指针
const char* cstr = str.c_str();
// 使用 data 方法获取字符数组的指针
const char* data = str.data();
std::cout << "C string equivalent: " << cstr << std::endl;
std::cout << "String data: " << data << std::endl;
char buffer[20];
// 使用 copy 方法将字符串的前 4 个字符复制到字符数组中
str.copy(buffer, 4);
buffer[4] = '\0'; // 手动添加结尾的 null 字符
std::cout << "Copied string: " << buffer << std::endl;
// 从位置 7 开始,长度为 5 的子字符串
std::string substr1 = str.substr(7, 5); // "World"
std::cout << "Substring 1: " << substr1 << std::endl;
// 从位置 0 开始直到末尾的子字符串
std::string substr2 = str.substr(0); // "Hello, World!"
std::cout << "Substring 2: " << substr2 << std::endl;
// 从位置 7 开始直到末尾的子字符串
std::string substr3 = str.substr(7); // "World!"
std::cout << "Substring 3: " << substr3 << std::endl;
std::string str1 = "apple";
std::string str2 = "banana";
// 比较字符串大小
int result1 = str1.compare(str2);
if (result1 < 0)
std::cout << "str1 is less than str2" << std::endl;
else if (result1 == 0)
std::cout << "str1 is equal to str2" << std::endl;
else
std::cout << "str1 is greater than str2" << std::endl;
// 比较子字符串大小
int result2 = str1.compare(0, 3, str2, 0, 3); // 比较 "app" 和 "ban"
if (result2 < 0)
std::cout
<< "First 3 characters of str1 are less than first 3 characters of str2"
<< std::endl;
else if (result2 == 0)
std::cout
<< "First 3 characters of str1 are equal to first 3 characters of str2"
<< std::endl;
else
std::cout << "First 3 characters of str1 are greater than first 3 "
"characters of str2"
<< std::endl;
总结
熟悉符串string类相关方法的使用
学习记录,侵权联系删除。
来源:朱老师物联网大课堂