2024.03.02蓝桥云课笔记

1.scanf与printf取消分隔符的限制方法

示例代码:

cpp 复制代码
int main()
{   
    char s[10];
    scanf("%d[^\n]",s);
    printf("%s",s);
    return 0;
}

运行:

输入:Hello World

输出:Hello World

注:其中[]中是一个正则表达式,表示只要不是回车就读进去。

scanf和printf的优势:

  1. 格式化输入输出
  2. 效率高

2.cin与cout取消同步流

cpp 复制代码
int main()
{
    //取消同步流
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    //其他操作不变
    int x;
    cin>>x;
    cout<<x;
    return 0;
}

由于cin和cout需要自动判断变量类型等内部原因,读写效率比scanf和printf低。当数据量较大时,可能导致程序运行超时。

通过取消同步流加速cin和cout,加速后相差无几。

3.string多种声明与初始化

cpp 复制代码
#include<iostream>
#include<string>
using namespace std;
int main()
{
	//声明初始化一个空的string
	string str1;
	//使用字符串字面量初始化字符串
	string str2 = "Hello World";
	//使用另一个字符串初始化字符串
	string str3 = str2; 
	//使用另一个string对象的部分来初始化字符串
	string str4=str3.substr(0,5);
	//substr(起始位置,长度)
	//使用字符数组初始化字符串
	const char*charArray = "Hello";
	string str5(charArray);
	//使用重复对的字符初始化字符串
	string str6(5,'A');
    //string(个数,字符)
	//输出
	cout<<str1<<endl; 
	cout<<str2<<endl; 
	cout<<str3<<endl; 
	cout<<str4<<endl; 
	cout<<str5<<endl; 
	cout<<str6<<endl;  
	return 0;
 } 

运行结果

Hello World

Hello World

Hello

Hello

AAAAA

此外还有一种读入一行字符串的方式:

cpp 复制代码
getline(cin,s);

4.string的基本操作

c_str

用于返回一个指向以空字符结尾的C风格字符串(const char*类型)

在进行printf输出时,需要将string转换为C风格的字符串进行输出。

实例代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	char buf[100];
	scanf("%s",buf);
	string str(buf);
	printf("str = %s\n",str.c_str());
	return 0;
 

输入:hello

输出:str = hello

遍历string

两种方法:

  1. 循环枚举下标
  2. auto枚举(&表示取引用类型,如果对i修改将会改变原来的值)

代码实例

cpp 复制代码
	string s = "helloworld";
	for(int i=0;i<s.length();++i)
	{
		cout<<s[i];
	}
	cout<<'\n';
	for(auto i: s)
	{
		cout<<i;
		i='a';//无效修改,这属于复制,而不是引用 
	}
	cout<<'\n';
	for(auto &i:s)
	{
		cout<<i;
		i='a';//有效修改,会改变s的值 
	}
	cout<<'\n';
	cout<<s<<'\n'; 

例题:1.反转字符串中的字符 - 蓝桥云课 (lanqiao.cn)

题解:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
  string str;
  getline(cin,str);
  reverse(str.begin(),str.end());
  cout<<str<<endl;
  return 0;
}

对其中用到的reverse()函数的说明参考:C++中的reverse()函数_c++ reverse函数-CSDN博客

相关推荐
周杰伦_Jay14 分钟前
【 RocketMQ 全解析】分布式消息队列的架构、消息转发与快速实践、事务消息
分布式·算法·架构·rocketmq·1024程序员节
sprintzer26 分钟前
10.16-10.25力扣计数刷题
算法·leetcode
王哈哈^_^35 分钟前
【数据集】【YOLO】【目标检测】建筑垃圾数据集 4256 张,YOLO建筑垃圾识别算法实战训推教程。
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·数据集
摇滚侠40 分钟前
全面掌握 PostgreSQL 关系型数据库,PostgreSQL 介绍,笔记02
数据库·笔记·postgresql
摇滚侠41 分钟前
Spring Boot3零基础教程,生命周期监听,自定义监听器,笔记59
java·开发语言·spring boot·笔记
CoovallyAIHub1 小时前
不看异常,怎么学会识别异常?用“异常”指导异常检测!——NAGL方法解析(附代码地址)
深度学习·算法·计算机视觉
张人玉1 小时前
WPF 控件速查 PDF 笔记(可直接落地版)
笔记·microsoft·wpf
共享家95271 小时前
数据结构-并查集
数据结构·c++·算法
摇滚侠1 小时前
Spring Boot3零基础教程,事件驱动开发,设计登录成功后增加积分记录信息功能,笔记61
java·spring boot·笔记·后端
IT古董2 小时前
【第五章:计算机视觉-项目实战之推荐/广告系统】2.粗排算法-(2)理解粗排模型之离线部分:双塔模型结构精讲及实现
人工智能·算法·计算机视觉