C 输入、输出

原文:https://blog.csdn.net/Li_haiyu/article/details/88767379

一、cin,可以接受数字和字符串的输入,遇空格,Tab和回车结束

二、cin.get()

用法1:用来接受一个字符,cin.get(字符变量) 与 字符变量 = cin.get() 结果一样 例子如下:

#include<iostream>
#include<string>
using namespace std;
 
int main() {
	char next;
	//next = cin.get();
	cin.get(next);//cin.get(next)与next = cin.get()一个意思,查看cin.get()内置函数可以发现返回的this指针
	cout << next << endl;
	while (1);
}

用法2:cin.get(字符数组名,字符数组长度),用于接受固定长度的字符串,包括空格

#include<iostream>
#include<string>
using namespace std;
 
int main() {
	char next[10];
	cin.get(next,10);
	cout << next << endl;
	while (1);
}

输入:abcdefghij(10个字符长度)

因为字符数组后面有一个‘\0’结束符,所以只能存放9个元素。

这里顺便记录一下计算字符数组长度的两个常用方法:

sizeof(数组名)/sizeof(数组类型)和strlen(数组名)

1、sizeof() 如果数组长度在中括号【】 中给定,那么sizeof()方法求得就是中括号【】的大小;如果数组长度没有在【】中指定,那么sizeof()计算数组长度的结果就是包括结束符‘\0’的长度。

2、strlen()求字符长度求的结果就是不包括‘\0’的长度

#include<iostream>
#include<string.h>
using namespace std;
 
int main() {
	char str1[10] = "China";
	char str2[] = "China";
	int sizeof_len_str1 = sizeof(str1) / sizeof(char);
	int sizeof_len_str2 = sizeof(str2) / sizeof(char);
	cout << sizeof_len_str1 << endl;//10  [10]确定大小,sizeof求的结果和[]一样
	cout << strlen(str1) << endl;//5  strlen()只计算实际字符个数,不包括结束符'\0'
	cout << sizeof_len_str2 << endl;//6  []没有指定大小,sizeof求的结果包括结束符'\0'
	cout << strlen(str2) << endl;//5  strlen()只计算实际字符个数,不包括结束符'\0'
	while (1);
}

三、 cin.getline() 接受一行字符,三个参数,第一个参数是数组名,第二个参数是接受的长度,第三个是默认参数'\0'表示输入的结束符。

#include<iostream>
using namespace std;
 
int main() {
	char ch[5];
	cin.getline(ch,5);//abcdefg
	cout << ch << endl;//abcd
	while (1);
}

设置‘c’为结束符

#include<iostream>
using namespace std;
 
int main() {
	char ch[5];
	cin.getline(ch,5,'c');//abcdefg
	cout << ch << endl;//ab
	while (1);
}

四、输入格式特殊情况,输入用逗号隔开的数组如1,2,3,4,5,更有丧心病狂输入情况如数组形式A={1,2,3,4}

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<vector>
using namespace std;

int main()
{
	string s;
	getline(cin, s);
	vector<int> arr;
	char* temp;
	char* p = const_cast<char*>(s.c_str());//c_str()返回的const char*类型
	temp = strtok(p, ",{ }A=");
	while (temp!=nullptr)
	{
		arr.push_back(atoi(temp));
		temp = strtok(NULL, ",{ }A=");
	}
	for (int i = 0; i < arr.size(); ++i)
		cout << arr[i] << endl;
	system("pause");
	return 0;
}

string类中的c_str()函数返回的类型是const char* 类型,用const_cast可以将const和非const转换。

strtok()函数的原型为

_Check_return_ _CRT_INSECURE_DEPRECATE(strtok_s)
_ACRTIMP char* __cdecl strtok(
    _Inout_opt_z_ char*       _String,
    _In_z_        char const* _Delimiter
    );

功能是以特定字符为分割点,将原字符分解字符串为一组字符串。_String为要分解的字符串,_Delimiter为分隔符字符串。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。使用strtok函数一般结合while语句使用。

输入为1,2,3,4

输出1 2 3 4

输入A={1,2,3,4}

五、保留x位小数输出(setprecision(n)的一些用法总结)

参考:https://blog.csdn.net/qq_36667170/article/details/79265224

setprecision(n)功能:控制浮点数显示的有效数字个数。

要保留几位小数setprecision(n)的括号里n就换成几。写一次就行了,对之后的数字都有效。

setprecision(n)和fixed合用的话可以控制小数点后有几位。

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	double a = 12.34;
	double b = 56.789;
	double c = 12345.6789;
	double d = 1.0;
	cout << setprecision(2) << a << endl;//12
	cout << b << endl;//56
	cout << c << endl;//1.2e+04
	cout << d << endl;//1
	cout << fixed << d << endl;//1.00
	system("pause");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值