您现在的位置是:首页 >技术教程 >精准核酸检测(C++)网站首页技术教程

精准核酸检测(C++)

婕婕天帝 2026-06-27 12:01:05
简介精准核酸检测(C++)

一、如何将输入中的逗号略去

1、stoi函数

名称解析:string to int的转化,将字符串常量转化为int值 

以下代码输出为:10

#include<iostream>
#include<string>
using namespace std;
int main()
{
   string str="10";
   cout<<stoi(str);
}

2、getline函数

getline(A,B,C):A是输入输出流,可以为cin或istringstream;B是存储处;C是在哪个字符处停止,默认为‘ ’,也就是换行符;

3、使用cin.get()

婕婕天帝同学在刷OD题库时,遇见了输入包含逗号的情况,查阅了一些博主的代码,他们都是用上面两个函数与sstream的头文件使用的。

但婕婕天帝并没有用!她使用了cin.get函数!

(1)首先明确从键盘中输入的本质(包含408计组与操作系统内容)

具体可参照408真题2023年第46大题。

键盘输入是中断I/O, 首先输入到内核缓冲区,当运行到相应输入代码时(例如:cin>>15),进程从内核缓冲区输入到用户缓冲区,而使用cin时,cin会忽略缓冲区中的诸如空格、换行等符号,但cin.get()函数会读取缓冲区中的所有字符,所以代码如下:

	//二维数组充当矩阵
	vector<vector<int>> s(n, vector<int>(n, 0));
	char temp;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			cin >> temp;
			s[i][j] = temp - '0';
			cin.get();
		}
	}

输入:

1,1,0,1,0
1,1,0,0,0
0,0,1,0,1
1,0,0,1,0
0,0,1,0,1

并不需要额外判断是否输入了一整行,因为换行符也被cin.get()读取了。

关于2024年408真题的某一个选择题,关于键盘输入最终是输入到哪了,婕婕天帝在写代码时从实践角度论证了该题:

在VS运行中,可以从键盘中输入多于当前代码的字符,但并不会在运行窗口体现多余输入值;此时就表明多余的输入字符并没有直接在用户缓冲区内;

而接下来运行下一行输入时,上次多余的字符直接显示在了运行窗口内。

说明其实是在内核缓冲区内存储的。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。