C++Primer Plus第12章类和动态内存分配程序清单12.1~12.3一个失败的例子重写003

测试交互函数函数

#pragma region 12.6.sayings1.cpp
//sayings1.cpp -- using expanded String class
//compile with string1.cpp
#if 1

#include <iostream>
#include"string1.h"
const int ArSize = 10;
const int MaxLen = 80;
int main()
{
	using std::cout;
	using std::cin;
	using std::endl;

	String name;
	cout << "Hi,what's your name?\n";
	cin >> name;

	cout << name << ",please enter up to " << ArSize << " short sayings <empty line to quit>\n";
	String sayings[ArSize];
	char temp[MaxLen];
	int i;
	for ( i = 0; i < ArSize; i++)
	{
		cout << i + 1 << ": ";
		cin.get(temp, MaxLen);
		while (cin && cin.get() != '\n')
		{
			break;
		}
		if (!cin||temp[0] == '\0')
		{
			break;
		}
		else
			sayings[i] = temp;
	}
	int total = i;
	if (total > 0)
	{
		cout << "Here are you sayings:\n";
		for ( i = 0; i < total; i++)
		{
			cout << sayings[i][0] << ": " << sayings[i] << endl;
		}


		int shortest = 0;
		int first = 0;
		for ( i = 0; i < total; i++)
		{
			if (sayings[i].lenght()<sayings[shortest].lenght())
			{
				shortest = i;
			}
			if (sayings[i]<sayings[first])
			{
				first = i;
			}
		}
		cout << "Shortest saying:\n" << sayings[shortest] << endl;
		cout << "First alphabetically:\n" << sayings[first] << endl;
		cout << "This program used" << String::HowMany();
		cout << "String object.Bye.\n";
	}
	else
	{
		cout << "Not input! Bye.\n";
	}
	return 0;
}
#endif
#pragma endregion

注意:较早的 get(char*,int)版本在读取空行后,返回的值不为false。然而,对于这些版本来说如果读取了一个空行,则字符串中第一个字符将是一个空字符。这个示例使用了下述代码:

if(!cintemp[0]==\0')	//empty line?
break ;					//i not incremented

如果实现遵循了最新的 C++标准,则if语句中的第一个条件将检测到空行,第二个条件用于旧版本实现中检测空行。
程序清单12.6中程序要求用户输入至多10条谚语。每条谚语都被读到一个临时字符数组,然后被复制到 String对象中。如果用户输入空行,break语句将终止输入循环。显示用户的输入后,程序使用成员函数length()和operator<()来确定最短的字符串以及按字母顺序排列在最前面的字符串。程序还使用下标运算符()提取每条谚语的第一个字符,并将其放在该谚语的最前面。下面是运行情况:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值