文章目录
- c++/python 的输入和输出
- 一、C++输入和输出
- 1. C++输入
- cin
- getline(cin,string)
- cin.getline(接收字符串数组的名称,接收字符个数,结束字符) 和 cin.get()
- getchar()
- C语言的gets()
- C语言得get_s
- C++输出
- C++常用函数
- 1. cin自带类型转换:
- 2. stringstream
- 反转(reverse)
- C++ 字符串操作
- 截取(s.substr)
- 转为10进制(stoi), int & str
- 分割(strtok)
- 判断是否是数字(isdigit),大小写(isupper)(islower)
- 插入、删除
- 排序(sort), 反转(reverse)
- 二. python 输入
- 1. 输入 --- input()
- 2. 输出 --- print()
- 参考文献
c++/python 的输入和输出
最近刷题,发现有些厂商的机试需要写输入输出,而自己经验较少,再次总结一下。方便自己查阅。
一、C++输入和输出
C++输入一般包括cin, get等。
1. C++输入
输入常用的是cin。 需要 包含头文件
#include <iostream>
cin
cin会在**’空格’、‘Tab’、'回车’处截断,
cin语句执行完后不会舍弃**最后一个结束符(tab键、空格键、回车键),它被留在缓冲区。
string input = "";
cin >> input;
//这时读入一个字符
>>a 2
//这时读入两个字符
>>a2 b
//读入一个整数
int num;
cin >> num
// 读入一个矩阵
// 第一行是 行和列
// 然后是矩阵
// 1 2 3
// 4 5 6
#include <iostream>
#include <vector>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
vector<vector<int>> maxtrix(m, vector<int>(n, 0));
for (int i=0; i<m; i++) {
for (int j=0; j<n; j++) {
int temp;
cin >> temp;
matrix[i][j] = temp;
}
}
return 0;
}
getline(cin,string)
getline()属于string流,需要include头文件iostream, string
#include <iostream>
#include <string>
geline(cin,string类型名,结束符)是string类的输入注意和cin.getline区别,所以不指定长度。默认是以回车结束,值得注意的是,它与cin.getline不同,getline函数只丢弃输入的结束符,结束符后面的输入信息不丢弃。
string input;
getline(cin, input);
cout << input;
//这时读入三个字符
>>a 2
a 2
cin.getline(接收字符串数组的名称,接收字符个数,结束字符) 和 cin.get()
cin.getline()属于istream流,从输入流中获得指定长度字符,赋值给数组或字符指针
char input[100];
cin.getline(input, 3);
cout << input << endl;
///必须为字符串数组 不能为string
>>abcd
>>ab //接收的最后一个为'\0',所以只看到2个字符输出
与cin.getline()类似,不同之处在于cin.get()函数录入到终止字符后, 控制输入流的指针指在了终止字符,后面的被放在缓冲区,而getline函数()遇到终止字符后指针位置在终止字符后面。
不能将两个cin.get()连用,除非中间添加cin.ignore()
常用cin.get()来读取回车,因为当遇到回车这个终止字符时会停留在这,而cin.getline()则停留在后面的字符
char input[100];
cin.get(input, 30, '#');
cout << input << endl;
//cin.ignore();
cin.get(input, 30, '#');
cout << input << endl;
>>This is the first get.#This is the second get.#
>>This is the first get.
//
char input[100];
cin.get(input, 30, '#');
cout << input << endl;
cin.ignore();
cin.get(input, 30, '#');
cout << input << endl;
>>This is the first get.#This is the second get.#
>>This is the first get.
This is the second get.
getchar()
getchar()是C语言中的函数,C++中也包含了该函数(不用加stdio.h)。getchar()函数的作用是从标准的输入stdin中读取字符。也就是说,getchar()函数以字符为单位对输入的数据进行读取。
//直接使用
char test1 = getchar();
C语言的gets()
读取整行输入,直至遇到换行符,然后丢弃换行符,储存其余字符,并在其末尾添加一个空字符使其成为一个字符串。用时需要include头文件stdio.h
#include <stdio.h>
char str[length];
gets(str);
C语言得get_s
gets_s函数只从标准输入中读取,第二个参数为最多读取的长度,一般就是数组的大小。gets_s函数读到的如果超出了字符数组的大小就会报错。
#include<stdio.h>
int main()
{
char a[5];
gets_s(a, 5);
printf("\n");
puts(a);
return 0;
}
C++输出
cout
C++常用函数
1. cin自带类型转换:
#include <iostream>
using namespace std;
int main() {
int result; //定义一个整型
cin >> result; //输入一个数字会默认转为int
cout << result;
return 0;
}
2. stringstream
使用stringstream需要头文件**#include **.是一个string 流。
// 输入一个矩阵
// 3 2 3
// 1 6 5
// 7 8 9
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
int main() {
string input;
vector<vector<int>> matrix;
while (getline(cin, input)) {
if (input.size() > 0) {
sstream streamstr(input);
int temp;
vector<int> a;
while (streamstr >> temp) {
a.push_back(temp);
}
matrix.push_back(a);
}
else {
break;
}
}
}
反转(reverse)
reverse是C++下的库函数,可用于翻转字符串,翻转链表等
#include<algorithm>
reverse(str.begin(),str.end()) //反转字符串
reverse(vector.begin(),vector.end()) //反转向量
reverse(a,a+strlen(a)) //反转数组
C++ 字符串操作
头文件 #include <string>
截取(s.substr)
string str = "asdas";
// string substr(size_t pos, size_t len); //返回从索引pose开始,长度为len的字符串
cout << str.substr(0, len);
转为10进制(stoi), int & str
#include <string>
string str = "123"
int stoi (const string& str, size_t* idx = 0, int base = 10);
//stoi(字符串,**起始位置**,n进制),idx是字符串的起始位置。将 base 进制的**字符串**转化为十进制, base默认是10进制,
int temp = stoi(str);
// int to str
#include <string>
int num;
string str = to_string(num);
分割(strtok)
#include <string>
/* 获取第一个子字符串 */
string str = "dasdasfaasfasfsafasf"
token = strtok(str, "a");
/* 继续获取其他的子字符串 */
while( token != NULL ) {
printf( "%s\n", token );
token = strtok(NULL, s);
}
判断是否是数字(isdigit),大小写(isupper)(islower)
#include <string>
using namespace std;
string str = "01234";
for (char& c:str) {
cout << isdigit(c) << endl;
cout << isupper(c) << endl;
cout << islower(c) << endl;
// toupper(), tolower()
cout << toupper(c) << endl;
cout << tolower(c) << endl;
}
插入、删除
// 删除第i个元素, 复杂度为n,中间有平移操作
// 删除第i个元素, 复杂度为n,中间有平移操作
str.erase(s.begin() + i);
// 第i个位置插入
str.insert(i, chr); // str.insert(1,'a');
//最后位置插入,删除
str.push_back(chr); // 在最后一个位置插入
str.pop_back(); // 删除最后一个
排序(sort), 反转(reverse)
#include <algorithm>
//默认从小到大
sort(str.begin(), str.end());
reverse(str.begin(), str.end());
// 按自己的设置规则排序
// a>b为降序;a<b为升序。
bool cmp(const int &a, const int &b){
return a>b;
}
int a[10];
sort(a,a+10,cmp);
二. python 输入
1. 输入 — input()
Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。默认换行符结束。
>>>a = input("input:")
input:123 # 输入整数
>>> type(a)
<class 'str'> # 字符串
>>> a = input("input:")
input:runoob # 正确,字符串表达式
>>> type(a)
<class 'str'> # 字符串
#!/usr/bin/python
#输入三角形的三边长
a,b,c = (input("请输入三角形三边的长:").split())
a= int(a)
b= int(b)
c= int(c)
#计算三角形的半周长p
p=(a+b+c)/2
#计算三角形的面积s
s=(p*(p-a)*(p-b)*(p-c))**0.5
#输出三角形的面积
print("三角形面积为:",format(s,'.2f'))
请输入三角形三边的长:3 4 5
三角形面积为: 6.00
# 输入矩阵
n = int(input()) # n行
arr = []
for i in range(n):
arr.append(list(map(int, input().rstrip().split())))
print(arr)
2. 输出 — print()
print() 方法用于打印输出,最常见的一个函数。
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
objects -- 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
sep -- 用来间隔多个对象,默认值是一个空格。
end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
file -- 要写入的文件对象。
flush -- 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。
例子
>>> print("www","runoob","com",sep=".") # 设置间隔符
www.runoob.com
import time
print("---RUNOOB EXAMPLE : Loading 效果---")
print("Loading",end = "")
for i in range(20):
print(".",end = '',flush = True)
time.sleep(0.5)
参考文献
输入输出