首页 > 其他分享 >字符串随笔

字符串随笔

时间:2024-03-06 14:58:40浏览次数:30  
标签:读取 cin ji str 字符串 随笔 getline

读字符串函数fgets
功能:从文件中读取字符串,每次只读取一行。
注意:

  1. fgets每次最多只能读取n-1个字2.符,第n个为NULL。
  2. 当遇到换行符或者EOF时,即使当前位置在n-1之前也读出结束。
  3. 若函数返回成功,则返回 字符串数组str的首地址。

例:小L很喜欢听私人笑声,可是有些歌曲他没有夹带私人笑声,小L就很生气,请你帮帮小L给歌曲带上私人笑声吧。

给你一段歌词,请你在所有’.'后面加上"xixixixi.",然后再输出全部歌词,例如给你一段歌词为:

“da ji da li,jin wan chi ji.xiong di jie mei,come on wo men yi qi.lao si ji,lao si ji ta zai zhe li.”

输出答案则是:

“da ji da li,jin wan chi ji.xixixixi.xiong di jie mei,come on wo men yi qi.xixixixi.lao si ji,lao si ji ta zai zhe li.xixixixi.”

输入描述

给你一行字符串,字符只由小写字母和",“和”."还有空格构成。(字符串长度<=1e6)

输出描述

输出题目要求字符串

用例输入 1

da ji da li,jin wan chi ji.xiong di jie mei,come on wo men yi qi.lao si ji,lao si ji ta zai zhe li.

用例输出 1

da ji da li,jin wan chi ji.xixixixi.xiong di jie mei,come on wo men yi qi.xixixixi.lao si ji,lao si ji ta zai zhe li.xixixixi.

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	char ss[100];
	fgets(ss,100,stdin);
	int n=strlen(ss);
	
	for(int i=0;i<n;i++)
	{
		if(ss[i]=='.')
		{
			cout<<".xixixixi";
		}else
		{
			cout<<ss[i];
		}
	}
	return 0;
}

洛谷:P1957 口算练习题

to_string 可以将整形数据转化为字符串,stoi()函数可以将字符串转化为整形数据。

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int n;
	cin>>n;
	string s;
	char c;
	int d,e;
	while(n--)
	{
		cin>>s;
		if(s[0]=='a'||s[0]=='b'||s[0]=='c')
		{
			c=s[0];
			cin>>d>>e;
		}else
		{
			d=stoi(s);
			cin>>e;
		}
		if(c=='a')
		{
			cout<<d<<"+"<<e<<"="<<d+e<<endl;
			string ss="";
			ss+=to_string(d)+'+'+to_string(e)+'='+to_string(d+e);
			cout<<ss.size()<<endl;
		}if(c=='b')
		{
			cout<<d<<"-"<<e<<"="<<d-e<<endl;
			string ss="";
			ss+=to_string(d)+'-'+to_string(e)+'='+to_string(d-e);
			cout<<ss.size()<<endl;
		}if(c=='c')
		{
			cout<<d<<"*"<<e<<"="<<d*e<<endl;
			string ss="";
			ss+=to_string(d)+'*'+to_string(e)+'='+to_string(d*e);
			cout<<ss.size()<<endl;
		}
	}
	return 0;
}

getline()用的比较多的用法

(1) istream& getline (istream& is, string& str, char delim);

(2) istream& getline (istream& is, string& str);
如果在使用getline()之前有使用scanf()那么需要用getchar()将前面的换行符读取,再使用getline(),

在使用scanf()函数读取数据时,scanf()函数会读取输入的内容,但是会在输入缓冲区中留下一个换行符(由于用户按下回车键而产生),而getline()函数在读取输入时会将换行符视为新的一行,因此可能会出现意外的问题。
为了解决这个问题,可以在使用getline()函数之前使用getchar()函数将换行符读取掉,从而确保getline()函数可以正确读取输入。
例:

#include <iostream>
#include <string>

int main() {
    int num;
    std::cin >> num;
    
    // 读取换行符
    getchar();

    std::string str;
    std::getline(std::cin, str);

    std::cout << "Number: " << num << std::endl;
    std::cout << "String: " << str << std::endl;

    return 0;
}

首先使用cin读取一个整数num,然后使用getchar()读取掉输入缓冲区中的换行符,最后使用getline()读取一行字符串str。这样可以确保getline()函数正确读取输入。

is是一个流,例如cin

str是一个string类型的引用,读入的字符串将直接保存在str里面

delim是结束标志,默认为换行符

getline()这个函数是可以读取空格,遇到换行符或者EOF结束,getline是读取换行符的,只是读取后丢弃了,所以缓冲区内就没有换行符了,这与fgets()存在着差异

getline()函数也可以指定一个可选的分隔符参数,用于指定读取行的结束标志,例如getline(cin, line, ',')表示遇到逗号','时停止读取。

在日常使用中我们经常需要将getline与while结合使用
例1:

string str;
    while(getline(cin,str)){
        。。。
    }

那么在这个例子中是不是我们输入了一个回车就会跳出循环呢,答案是否定的,while只会检测cin的输入是否合法,那么什么时候会跳出循环呢,只有1.输入EOF,2.输入到了文件末尾
例2:

string str;
while(getline(cin,str),str != "#"){
  。。。
}

在这个例子中,逗号运算符的作用就是将最后一个式子作为判定的条件,即while判断的是str != "#"这个条件,只有当输入到str的为#键时,循环才会结束
https://blog.csdn.net/m0_37616927/article/details/86749099

一. 集美大学“第十五届蓝桥杯大赛”
https://zhuanlan.zhihu.com/p/678902967
【3】20231122
求区间[2023,20231122]范围内的整数出现 1122 子串的整数数量。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int ans=0;
	for(int i=2023;i<=20231122;i++)
	{
		ans+=to_string(i).find("1122")!=string::npos;
	}
	cout<<ans<<endl;
	return 0;
}
to_string(i) 是一个 C++ 标准库函数,用于将整数转换为对应的字符串。接受一个整数作为参数,并返回一个表示该整数的字符串。

例如:如果你有一个整数变量 int num = 123,你可以使用 to_string(num) 来将它转换为字符串。函数将返回一个包含 "123" 的字符串。(✳只适用于整形数据)

当你想要在一个字符串中找到一个特定的子字符串时,可以使用 .find("1122") 函数。它接受一个字符串作为参数,并返回一个表示该子字符串在原始字符串中第一次出现的位置的整数值。(✳.find()函数只会返回第一次出现的位置(从0开始索引)。)

例如,如果你有一个字符串变量 string str = "112233445566";,你可以使用 str.find("1122") 来找到子字符串 "1122" 在原始字符串中的位置。如果 "1122" 存在于字符串中,函数将返回一个非负整数,表示子字符串的起始位置。如果子字符串不存在,函数将返回一个特殊的值 string::npos。

标签:读取,cin,ji,str,字符串,随笔,getline
From: https://www.cnblogs.com/miao-jc/p/18056399

相关文章

  • 关于感情-随笔
    关于感情关于你最后提出的问题,我给出一点自己的拙见。我认为感情是双向的,你爱他她爱你,这样才能长久下去,而你们之间大多数都是你在单方面的付出,也许刚开始的时候你还有足够的耐心与感情去对她好,但是感情是会被消磨的,一次又一次的单方面付出消磨了你们的感情,直到长时间之后你感觉到......
  • LeetCode75 1768.交替合并字符串
    1768.交替合并字符串https://leetcode.cn/problems/merge-strings-alternately/description/?envType=study-plan-v2&envId=leetcode-75publicStringmergeAlternately(Stringword1,Stringword2){intlen1=word1.length();intlen2=word2.length()......
  • 算法随笔——图论:无向图三/四元环计数
    参考:https://oi-wiki.org/graph/rings-count/题目链接:P1989无向图四元环计数求四元环步骤:建双向边。给每条边定向,由度数小的点指向大的,若度数一样则看编号大小。此时只有这几种情况:都可以归类为:枚举起始点A,枚举A<-->B(双向边),枚举B-->C,让C点被访问次数\(cnt\)......
  • 青少年CTF训练平台-web部分随笔
    文章管理系统首先打开环境(>ω<。人)ZZz♪♪既然要做题,就要做全面了,图上说了,既然有假flag我就先找出来:假flag:打开vmware,使用sqlmap进行处理:sqlmap-uhttp://challenge.qsnctf.com:31645/?id=1--dbs记得中间的url换成自己的看到了五个可能:{*]ctftraining[*]information......
  • JS字符串、数组 常用方法
    字符串字符串增:1、+拼接2、concat()例:leta='hello'  letb=a.concat('word')  console.log(b) // "helloworld" 字符串删:1、slice(star,end)  从原始字符串中提取一个子字符串,并返回一个新的字符串,而不改变原字符串。start(必需):起始位置。如果是正数,则......
  • 3月5日-java随笔(雪花算法)
    一、简单介绍一下雪花算法原理1、雪花算法生成一个64bit的长整型标识符,其内部结构包含四个部分。首先,最左侧的一个bit通常被置为0作为符号位(在实际应用中往往无意义)。接下来的41bit用于存储自某个时间起点以来的毫秒级时间戳,以此确保生成的ID具有时间上的有序性。第三个组成部分......
  • day 05-3 数据类型(字符串)
    3.3公共功能1.字符串相加v1="linzai"+"是个好人"print(v1)#linzai是个好人2.字符串相乘v1="linzai"*3print(v1)#linzailinzailinzai3.计算字符串的长度v1="linzai"data=len(v1)#计算字符串的长度print(data)#64.获取字符串的字符,索引字符......
  • snappy压缩格式下使用数字与字符串不等于比较,hiveSQL和sparkSQL表现不一致的行为记录
    Hive版本:2.3.4Spark版本:2.4.0当时用Snappy格式对表进行压缩时,时用<>符号将字符串与数字进行比较会产生不一致的结果。SparkSQL结果并非预期结果。DROPTABLEIFEXISTStest.zero_test;CREATETABLEtest.zero_testTBLPROPERTIES("orc.compress"="SNAPPY")ASSELECT......
  • 往 netty Channel中写入字符串
    示例代码:EventLoopGroupgroup=newNioEventLoopGroup();Bootstrapbootstrap=newBootstrap();bootstrap.group(group).channel(NioSocketChannel.class).option(ChannelOption.SO_KEEPALIVE,true)......
  • Python 生成随机字符串
    0x00吐槽最近让项目坑的没办法,老写一些脚本来协助工作,刚好在测试python生成word的时候遇到需要随机字符串来命名文档名,简单写点东西记录一下0x01一班的童靴其实随机字符串这个东西在任何语言里都经常会用到,而且解决方法也简单首先定义一个字符串,随机字符串就从这里面取,然......