无符号数的诡异
字符串长度
字符串包含的字符个数。
空字符串的长度是0;
""是空字符串常量,没有一个字符,长度是0;
" "是空格字符串常量,包含1个空格,长度是1;
"god"的字符串长度是3;
"欢迎你"的字符串长度不是3,是6或9;(在某些编码中,一个汉字占用2个或(3个)字节)
字符串常量
“字面型”字符串常量,要求用""括起来。
printf("name=%s", "Pook");//C语言方式输出字符串,%s用来匹配字符串
cout << "Pook";//C++方式输出字符串
字符串结束符
在c语言中,为了便于存储字符串,要求在最后一个字符的后面存储一个0;
这个0,称为 “字符串结束符”,常用"\0"表示。
"China"→'C' 'h' 'i' 'n' 'a' '\0'
''→'\0'
在C++中,字符串的最后并没有字符串结束符!
实际存储中,根据编译器的不同,最后可能存储一个字符串结束符,也可能没有。
string字符串
"China"→'C' 'h' 'i' 'n' 'a'
字符串变量的表示
在C语言中,使用char类型的数组,来存储字符串变量;
注:C语言中,没有专用的字符串类型
在C++语言中,使用std::string类型来表示字符串变量;
String变量的输入、输出
使用std::cin >> 输入
从第一个非空白字开始,直到遇到空字符时停止输入
空白字符是指:空格,制表符,回车符
使用std::cout << 输出
例1:
string job;
cout << "工作:" << endl;//console output
cin >> job; //console input
cout << job << endl;
例2:
string food;
int count = 0;
cout << "你喜欢的食物";
//需要使用循环语句
//使用cin >> 输入时,如果遇到文件结束符(Ctrl+Z),就返回0
while(cin >> food)
{
count += 1;
cout << count << food <<endl;
}
例3:
string addr;
//读一行
//从标准输入设备(cin),读取一行字符串,保存到字符串变量addr中
//读一行,直到遇到回车符,注意不包括回车符
//如果用户直接回车,就没有任何数据输入!
getline(cin, addr);
//empty()判断一个字符串,是否为空
//如果是空字符串,结果是true
//否则为false
if(addr.empty())
{
cout << "你输入了一个空串" << endl;
}
else
{
cout << addr << endl;
}
//计算字符串的长度
cout << addr.size();
cout << addr.length();
string字符串的比较
从字符串的第一个字符开始,对应字符逐个比较,直到遇到不相等的字符为止。
比较运算符:>、 <、 ==、 >=、 <=
C语言风格的字符串char数组
字符串是以“字符数组”存储的
char nume[32];
scanf("%s", nume);
printf("%s", nume);