1 string类概述
C++ 的 std::string
类是 C++ 标准库中的一个重要组件,用于表示和操作字符串。std::string
类提供了许多有用的成员函数,允许你执行各种字符串操作,如连接、比较、搜索、替换、插入和删除等。
std::string
类是定义在 <string>
头文件中的。要使用 std::string
类型及其相关的函数和操作符,我们需要在源代码文件中包含该头文件。
2 string构造字符串
std::string
类提供了多种构造字符串的方法。这些构造函数允许你使用不同类型的输入来初始化字符串对象。常用的构造方法包括:
-
std::string()
: 创建一个空字符串。 -
std::string(const char* s)
: 使用 C 字符串s
创建一个字符串。 -
std::string(const std::string& str)
: 使用另一个字符串str
创建一个副本。 -
std::string(size_t n, char c)
: 创建一个包含n
个字符c
的字符串。 -
std::string(const_iterator first, const_iterator last)
: 使用迭代器first
和last
创建一个字符串。 -
std::initializer_list
:使用初始化列表创建字符串;这是C++11引入的初始化列表语法。
2.1 C字符串构造string对象
在C++中,可以使用C风格的字符串(即,以空字符'\0'
结尾的字符数组)来构造std::string
对象。这是通过使用std::string
的构造函数std::string(const char* s)
来实现的,该构造函数接受一个指向C风格字符串的指针。
#include <iostream>
#include <string>
int main()
{
// 定义一个C风格字符串
const char* cstr = "Hello, World!";
// 使用C风格字符串构造std::string对象
std::string str(cstr);
// 输出std::string对象
std::cout << str << std::endl;
return 0;
}
2.2 复制构造string对象
在C++中,复制构造std::string
对象是指使用另一个已经存在的std::string
对象来初始化一个新的std::string
对象。复制构造函数会创建一个新的std::string
对象,其内容与原始对象相同。
#include <iostream>
#include <string>
int main()
{
// 创建一个std::string对象
std::string original("Hello, World!");
// 使用复制构造函数复制original
std::string copy(original);
// 输出原始对象和复制的对象
std::cout << "原始字符串: " << original << std::endl;
std::cout << "复制字符串: " << copy << std::endl;
return 0;
}
除了上述调用拷贝构造函数来复制构造string对象外,我们还可以通过赋值操作符=
将一个已存在的std::string
对象的内容赋给另一个std::string
对象。
#include <iostream>
#include <string>
int main()
{
// 创建一个std::string对象
std::string original("Hello, World!");
// 使用赋值运算符复制original
std::string copy;
copy = original;
// 输出原始对象和复制的对象
std::cout << "原始字符串: " << original << std::endl;
std::cout << "复制字符串: " << copy << std::endl;
return 0;
}
2.3 std::initializer_list初始化string对象
在C++中,std::initializer_list
是一种特殊的模板类,它允许你使用花括号{}
初始化一个对象。自C++11起,std::string
类提供了接受std::initializer_list<char>
的构造函数,可以使用花括号内的字符列表来初始化一个std::string
对象。
#include <iostream>
#include <string>
#include <initializer_list>
int main()
{
// 使用std::initializer_list初始化std::string对象
std::string str{"Hello, World!"};
// 输出string对象
std::cout << str << std::endl;
return 0;
}
3 string类输入
在C++中,std::string
类提供了多种方式来输入字符串。最常用的方法包括:
-
通过标准输入流
std::cin
,它允许从键盘输入字符串。 -
使用
std::getline
函数从输入流中读取一行作为字符串。
3.1 std::cin输入字符串
std::cin
会从标准输入读取一个单词(由空格、制表符或换行符分隔)。
#include <iostream>
#include <string>
int main()
{
// 声明一个std::string对象
std::string str;
// 使用std::cin输入字符串(不支持空格)
std::cout << "请输入一个不包含空格的字符串: ";
std::cin >> str;
// 输出输入的字符串
std::cout << "你输入的字符串是: " << str << std::endl;
return 0;
}
注意,std::cin
默认使用空白字符(如空格、制表符和换行符)作为分隔符,因此如果我们想要输入一个包含空格的字符串,那么我们需要使用 std::getline
函数,而不是直接使用 std::cin
。
3.2 std::getline函数输入字符串
如果我们想要输入包含空格的整行字符串,你应该使用std::getline
函数。该函数会从输入流中读取一行,直到遇到换行符,然后将整行内容存储在std::string
对象中。
#include <iostream>
#include <string>
#include <sstream>
int main()
{
// 声明一个std::string对象
std::string str;
// 使用std::getline输入字符串(包括空格)
std::cout << "请输入一行字符串: ";
std::getline(std::cin, str);
// 输出输入的字符串
std::cout << "你输入的字符串是: " << str << std::endl;
return 0;
}
欢迎您同步关注我们的微信公众号!!!