解析输入中的数值与字符串

C/C++ 2015年01月07日 ,

合理的处理输入/输出流是处理C++人机交互的基础,枫竹梦介绍一种处理输入的方法,以免因用户输入的不合法使得程序崩溃。使用C++标准库的标准输入对象进行处理。

目标

当以如下格式输入时:

-1ab.23cd4e5e67

应当能够解析出如下内容:

-1
ab
0.23
cd
400000
e
67

C++实现

声明:如下代码不适用于解析特殊字符,如a-b等输入。

#include <iostream>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
	double dNum;
	string str;
	char ch;  // 第一个缓冲字符
	char ch2; // 第二个缓冲字符

	while (cin.get(ch))
	{
		if(ch == '\n')
		{
			continue;
		}
		// 处理数字开头的数值
		if(ch >= '0' && ch <= '9')
		{
			cin.putback(ch);
			cin >> dNum;
			cout << "number: " << dNum << endl;
		}
                // 处理 +、-、.开头的数值
		else if(ch == '+' || ch =='-' || ch == '.')
		{
			if(cin.get(ch2))
			{
				cin.putback(ch2);
				cin.putback(ch);

				if(ch2 >= '0' && ch2 <= '9')
				{
					cin >> dNum;
					cout << "number: " << dNum << endl;
				}
			}
		}
                // 处理字符串
		else
		{
			str = ch;
			while (cin.get(ch) && isalpha(ch))
			{
				str.push_back(ch);
			}
			cin.putback(ch);
			cout << "string: " << str << endl;
		}
	}
	return 0;
}

如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
日志标题:《解析输入中的数值与字符串》
日志链接:http://furzoom.com/split-number-and-string/
博客名称:枫竹梦

发表评论

插入图片

NOTICE1:请申请gravatar头像,没有头像的评论可能不会被回复!

回到顶部