C++利用cin.get和cin直接输入任意size的vector<string>

2021/10/23 22:12:53

本文主要是介绍C++利用cin.get和cin直接输入任意size的vector<string>,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

  • 前言
  • 一、简述两者之间的区别
  • 二、代码以及测试
    • 1.代码
    • 2.测试
  • 总结


前言

cin和cin.get()的混合使用经常会带来一些奇怪的bug,这是因为两个函数的读取奇数略有不同,详情可见C++ cin.get用法。


提示:以下是本篇文章正文内容,下面案例可供参考

一、简述两者之间的区别

当cin.get在cin之后使用的时候,cin并不会读取字符结尾的空格,但是接下来使用的cin.get()会将cin不会读入的回车符读入;cin不会读入ctrl+z,但是,cin.get会直接读入,并判断为EOF,需要注意的是EOF在C++中常常被判断为-1,而不是char类型,所以对于cin.get函数的赋值注意使用int整型,而不要使用char类型。

二、代码以及测试

1.代码

代码如下(示例):

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
	vector<string> words = {},result;
	int maxWidth;
	cin >> maxWidth;//输入fullJustify函数的另一个参数
	string temp;
	int ch;
	cin >> temp;
	//cin并不会读取结尾的空格,但是接下来使用的cin.get()会读入,所以第一个temp直接用cin输入,之后再用cin.get()判断是否输入完毕;此外,cin不会读入ctrl+z,但是,cin.get会直接读入,并判断为EOF
	while ((ch=cin.get()) != EOF) {
		words.push_back(temp);
		cin >> temp;
	}
	result=fullJustify(words, maxWidth);
	for (int i = 0; i < result.size(); i++) {
		cout << result[i] << endl;
	}
	return 0;
}

2.测试

测试样例输入:

16
I love China!
^z

输出控制台调试:

控制台调试结果


都看到这里了,点个赞再走吧~

总结

cin在某些情况下会比getline函数的输入更有安全性,使用cin以及cin.get()函数可以实现vector<string> 类型的任意长度输入,使用ctrl+z可以终止输入。



这篇关于C++利用cin.get和cin直接输入任意size的vector<string>的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程