图片来源于王道机试课程
代码
#include <cstdio>
#include <string>
using namespace std;
int main() {
char buf[100];//申请一个字符数组
//scanf("%s",buf);//只能读取一个单词
//fgets(buf,sizeof(buf),stdin);
fgets(buf,100,stdin);//推荐直接写100
string str = buf;//用一个字符数组生成一个C++风格的字符串
printf("str = %s\n", str.c_str());//将C++风格的字符串转换成字符数组
return 0;
}
C++风格的字符串
%d 可以输出负数,%u 只能输出正数
求字符串的长度
这种没有边界问题,用C风格的字符串要注意边界问题
printf("length of str = %u\n", str.size());//获取字符串的长度
unsigned int 无符号整数
%c 字符
访问字符串中的每一个元素
//访问字符串中的每一个字符
for(unsigned int i = 0; i < str.size(); ++i){
printf("%c", str[i]);
}
迭代器访问元素
//迭代器 —— 指针
//iterator 迭代器
for(string::iterator it = str.begin(); it != str.end(); ++it){
//++it 更改迭代器的指向,到下一个元素
printf("%c\n", *it);// *it 通过地址去访问元素
}
输入输出用C风格,做各种内容上操作的时候一律用C++风格
操作字符串的内容
图片来源于王道机试课程
代码
#include <cstdio>
#include <string>
using namespace std;
int main() {
char buf[100];//申请一个字符数组
//scanf("%s",buf);//只能读取一个单词
//fgets(buf,sizeof(buf),stdin);
fgets(buf,100,stdin);//推荐直接写100
string str = buf;//用一个字符数组生成一个C++风格的字符串
// printf("length of str = %u\n", str.size());//获取字符串的长度
//str.erase(5);// 5表示要删除的数组的下标
str.erase(str.size()-1);// 把最后一个元素去掉
str.clear();// 清空
str = str + "world";// +在C++风格的字符串中,表示连接操作
printf("str = %s\n", str.c_str());//将C++风格的字符串转换成字符数组
//访问字符串中的每一个字符
// for(unsigned int i = 0; i < str.size(); ++i){
// printf("%c", str[i]);
// }
//迭代器 —— 指针
//iterator 迭代器
// for(string::iterator it = str.begin(); it != str.end(); ++it){
// //++it 更改迭代器的指向,到下一个元素
// printf("%c\n", *it);// *it 通过地址去访问元素
// }
return 0;
}