C++查漏补缺——String(1)

本文探讨了C++中String的使用,包括strlen()函数计算未初始化数组长度的原理,以及getline()函数的两种不同用法:作为istream成员方法和string类的友元函数。同时,指出了使用getline()输入字符串后需要额外回车才能继续执行的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看下面的程序(本程序是在C++ Primer Plus 第六版看的),
#include<iostream>
#include<string>
#include<cstring>

int main(){

	using namespace std;
	char charr[20];
	string str;

	cout << "Legth of string in charr before input:"
		<< strlen(charr) << endl;
	cout <<" Length of string in str before input:"
		<< str.size() << endl;
	cout << "Enter a line of text:\n";
	cin.getline(charr,20);
	cout << "You entered:" << charr << endl;
	cout << "Enter another line of text: \n";
	getline(cin,str);
	cout << "You entered: " << str << endl;
	cout << "Length of string in charr afrer input :"
		<< strlen(charr) << endl;
	cout << "Length of string in str after inout:"
		<< str.size() << endl;

	return 0;
}


输出结果:

在输入之前数组charr的字符串长度为23,这是由于charr没有初始化,函数strlen()从数组第一个元素开始计算字节数,知道遇到空字符。

下面才是重点:

cin.getline(charr,20)这种句点表示法说明getline()是istream累的一个类方法,第一个参数是目标数组,第二个参数是数组长度,避免越界。

getline(cin,str)没有使用句点表示法,说明getline()不是类方法,第一个参数表示从哪里查找输入,第二个参数表示目标参数。这个函数式string类的友元函数

 

还有个现象时使用getline(cin,str),输入字符串后回车,还得在回车一次才能自行下面的程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值