字符数组和字符串的输入输出方式比较多,每种方法都有些细微的区别。今天学了一天的字符串操作语法,回看自己的作业和y总及优秀同学相比差距巨大,自己很难针对当前的题目找到最合适的方法,而y总每道题解都最优化得十分美妙。不总结一下感觉白学了 (╥╯^╰╥)
方法 | 对象 | 空格 | 换行 |
---|---|---|---|
cin >> string | 字符数组和字符串 | 不读取 | 不读取 |
cin.getline(char[] arr,int length) | 字符数组 | 读取 | 不读取 |
getline(cin,string str) | 字符串 | 读取 | 不读取 |
fgets(char[] arr,int length,stdin) | 字符数组 | 读取 | 读取 |
我觉得用哪种方法 仁者见仁智者见智,今天我一直在用getline,遇到输出的空格和换行要求就自己处理,头太铁了撞得挺疼的,还是多看看别人的用法学习下吧!看起来cin >> str (可以写在循环条件里)和scanf(“%s”, arr)比较好用,适用范围最广
边界条件
- 判断空格 str[i] == ‘ ‘(手动处理) 和 cin >> str(直接不读)
- 判断结束 str[i] 或 str[i] == 0 或 str[i] == ‘\0’
- 判断换行 str[i] == ‘\n’(手动处理) 和 cin.getline()(直接不读) fgets读取换行
string的常用方法
- 截取第a位到第b位的子串 查找主串找中子串位置 substr(a, b+1); str1.find(str2);
- 从尾到头查找主串找中子串位置 str1.rfind(str2);
- 查找和删除最后一位 if(str.back()==’.’) str.pop_back();
- 字符串变为流 stringstream ssin(string str)
- 字符串交换 复制 包含 swap(str1, str2); strcpy(ch, str.c_str()); strstr(charr1, charr2)
- 库函数大全
substr(a, b) 好像是截取字符串中从a位起,b个数的子串,b表示子串长度(length)