电子说
前一篇文章我们已经了解了C++中的基本类型,C++还提供了很多抽象数据类型,例如字符串string,string包含多个字符,以及可变长度的vector,vector可以包含多个同一类型的对象。
在之前的程序中可以看到我们通过命名空间来解决可能的命名冲突,代码如下
# include
int main() {
std::cout<<"please enter two numbers:"<
这样看来每次调用cin和cout时都要带上命名空间和范围标识符会显得比较繁琐,就像在Java中每次调用方法都要带上包名和类名一样,Java使用import关键字来引入依赖,在C++中则是使用using关键字来解决这个问题,例如上述例子可以通过using std::cin来表示引入std命名空间内的cin。
# include
using std::cin;
using std::cout;
using std::endl;
int main() {
cout<<"please enter two numbers:"<
如果确定程序中没有命名冲突,可以直接使用using std,不需要分别一一引入,就像Java中直接import一个类。
# include
using namespace std;
int main() {
cout<<"please enter two numbers:"<
❝需要注意的是头文件不能使用using,因为头文件的内容是需要拷贝到引入头文件的文件当中去,如果多个头文件使用using引入相同的命名空间,程序无法知道使用哪一个,会引发命名冲突。
❞
字符串是一系列字符的组合,如果需要使用字符串需要引入头文件string,其也在std命名空间。
string的定义和初始化方法有以下几种
# include
# include
using std::string;
using std::cout;
using std::endl;
int main() {
string s1; //默认初始化,s1是一个空字符串
string s2 = s1; // s2是s1的拷贝
string s3(s1); //等同于s2 = s1,s3是s1的拷贝
string s4("value"); //s4是value的拷贝
string s5 = "value";
string s6(4, 'c'); // s6是cccc
cout<
之前我们曾提到一个对象的类型决定了其存储的方式以及操作,string支持的操作如下
操作 | 解释 |
---|---|
os << s | 将字符串写到输出流 |
is >> s | 从输入流中读取 |
getline(is, s) | 从输入流中读取一行 |
s.empty() | 判断是否为空,如果为空返回true,否则返回false |
s.size() | 返回字符串的长度 |
s[n] | 返回第n个字符 |
s1 + s2 | 将s1和s2拼接 |
s1 = s2 | 将s2的字符串拷贝给s1 |
s1 == s2 | 判断s1和s2的字符串是否相等 |
s1 != s2 | 判断不相等 |
< <= > >= | 比较是大小写敏感的 |
有时候在接受输入时我我们并不想忽略输入的空格,这时候可以使用getline来获取输入的一整行。
# include
# include
using std::string;
using namespace std;
int main() {
string line;
while (getline(cin, line))
{
cout<
字符串是由一系列的字符组成,而字符中有一些分类,例如4是一个数字字符,a是一个小写字母,C++中提供了一些方法可以很方便地判断字符的类型和做一些操作。
函数 | 解释 |
---|---|
isalnum | 如果是字母或者数字返回true |
isalpha | 如果是字母返回true |
iscntrl | 如果是control返回true |
isdigit | 如果是数字返回true |
isgraph | 如果不是空格但是可打印返回true |
islower | 如果时小写字母返回true |
isprint | 如果时可打印返回true |
ispunct | 如果是标点返回true |
isspace | 如果是空格返回true |
isupper | 如果是大写字母返回true |
isxdigit | 如果时16进制数返回true |
tolower | 将大写字母转化为小写字母 |
toupper | 将小写字母转化为大写字母 |
以下代码就是将hello world转化为HELLO WORLD
# include
# include
using std::string;
using namespace std;
int main() {
string line = "hello world";
for (auto &c : line) {
c = toupper(c);
}
cout<
全部0条评论
快来发表一下你的评论吧 !