问题来源

  http://ac.jobdu.com/problem.php?pid=1010

问题描述

  给我们一行标准的字符串,整行读入之后,把它拆开转换成数字进行计算。

问题分析

  首先考虑一个问题:如何整行读入字符串?为此我特地写了一篇博客来解释,如何使用各种方法整行读入字符串,请参考:http://www.cnblogs.com/AlvinZH/p/6798023.html

  本题的难点在于拆开字符串。由于在C/C++里面是没有spilit函数的,但是它有strtok函数,我们可以自己协议标准的spilit函数。
字符串分割strtok函数详解:http://blog.csdn.net/mycwq/article/details/14648011

  在代码中我自定义了一个spilit函数,以后可以用这个当做模板函数来用!

参考代码

//
// Created by AlvinZH on 2017/4/30.
// Copyright (c) AlvinZH. All rights reserved.
// #include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
using namespace std; vector<string> split(string& str,const char* c)
{
char *cstr,*p;
cstr = new char[str.size()+];
strcpy(cstr,str.c_str()); vector<string> res;
p = strtok(cstr,c);
while(p!=NULL)
{
res.push_back(string(p));
p = strtok(NULL,c);
}
delete[] cstr; return res;
}
int wordTOnum(string s)
{
if(s=="zero") return ;
else if(s=="one") return ;
else if(s=="two") return ;
else if(s=="three") return ;
else if(s=="four") return ;
else if(s=="five") return ;
else if(s=="six") return ;
else if(s=="seven") return ;
else if(s=="eight") return ;
else if(s=="nine") return ;
} int main()
{
int x,y;
bool afterAdd;
string str;
const char *delims=" ";
while(getline(cin,str))
{
x=y=;
afterAdd=false;
vector<string> s;
s=split(str,delims); if(s[]=="zero"&&s[]=="zero") break; int len=s.size();
for(int i=;i<len-;i++)
{
if(s[i]=="+") afterAdd=true;
else
{
if(afterAdd) x=x*+wordTOnum(s[i]);
else y=y*+wordTOnum(s[i]);
}
}
cout<<x+y<<endl;
}
}

作者: AlvinZH

出处: http://www.cnblogs.com/AlvinZH/

本人Github:https://github.com/Pacsiy/JobDu

本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

题目1010:A + B(字符串拆分)的更多相关文章

  1. UTF-8编码的字符串拆分成单字、获取UTF-8字符串的字符个数的代码及原理

    一.字符编码简介 1. ASCII码 在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(by ...

  2. SQL2000/2005字符串拆分为列表通用函数

    ------------------------------------------------------------------ --  Author : htl258(Tony) --  Dat ...

  3. sql之cursor的简介和字符串拆分(split)与游标的使用

     字符串拆分(split)与游标的使用 CREATE TABLE Plates ( ,), ) NOT NULL, [BusinessId] INT NOT NULL, ) ),),), SELECT ...

  4. SQL 字符串拆分

    字符串拆分: ALTER FUNCTION [dbo].[f_Split](@sText nvarchar(max),@split NVARCHAR(20)) RETURNS @t TABLE (id ...

  5. php将长字符串拆分为指定最大宽度的字符串数组

    /** * 将字符串拆分为指定最大宽度的字符串数组.单字节字符宽度为1,多字节字符通常宽度为2 * @param string $msg 要拆分的字符串 * @param int $width 结果数 ...

  6. 截取字符(pos,copy,Leftstr,MidStr,RightStr)以逗号为准把字符串拆分,判断字符串是否有数字、字母(大小写), 去掉字符串空格

    1.copy(a,b,c) 举个例子: str := “123456”;str1 := Copy(Str,2,3);结果就是 str1 等于 234.Copy有3个参数,第一个是你要处理的字符串,第二 ...

  7. Java字符串拆分和字符串连接

    Java字符串拆分/连接 public class LierString{ //------------------------------------------------------------ ...

  8. java解析字符串拆分单独元素

    有时候,需求要求传递多个字符串参数,但是方法参数已经固定为单个String,笔者在学习unity和android之间的消息传递时就遇到这个问题,所以就写了这么一个解析字符串拆分单独元素的方法. 示例: ...

  9. mycat1.6.5分片(字符串拆分hash)

    https://blog.csdn.net/webnum/article/details/78313525   分片规则:字符串拆分hash 一.conf/schema.xml文件   <?xm ...

  10. 单列表变量与字符串拆分的对照(SqlServer)

    最近遇到一个问题,在SQLServer中,需要根据用户传入的一系列ID值更新对应的记录.有两种方法,一种是将这些ID值使用逗号分隔,拼接成字符串传入,一种是以表变量的方式传入.最开始,我想当然的认为传 ...

随机推荐

  1. zabbix主机自动注册

    一.主机自动注册的流程 zabbix agent指定server active主动自己的信息提供给zabbix_server,zabbix_server根据提供的信息自动添加主机,方便. 二. lin ...

  2. SQL Server横向扩展:设计,实现与维护(2)- 分布式分区视图

    为了使得朋友们对分布式分区视图有个概念,也为了方便后面的内容展开,我们先看看下面一个图:     讲述分布式分区视图之前,很有必要将之与我们常常熟悉的分区表和索引进行区别. 首先,分布式分区视图是一个 ...

  3. 10个android开发必备的开源项目

    You are here: Home » » Blog » 10 Open Source Android Apps which every Android developer must look in ...

  4. AspectJ AOP介绍

    idea下aspectj程序运行示例 有些同学可能想自己编写aspect程序进行测试练习,博主在这简单介绍运行环境的搭建,首先博主使用的idea的IDE,因此只对idea进行介绍.首先通过maven仓 ...

  5. [C++] Deep copy ,Shallow copy, copy constructor,"="

    Deep copy ,Shallow copy, copy constructor,"=" Dog.h #pragma once class Dog { public: char ...

  6. EZOJ #257

    传送门 分析 先进行缩点 之后从终点倒着跑 对于一组边如果有一个点不能到达则这组边直接废掉 最后看只用没废掉的边能不能从起点走到终点 代码 #include<iostream> #incl ...

  7. Python的内建比较函数cmp比较原理剖析-乾颐堂

    cmp( x, y):比较2个对象,前者小于后者返回-1,相等则返回0,大于后者返回1. Python的cmp比较函数比较原理 Python的cmp函数可以比较同类型之间,或者不同数据类型之间.然后根 ...

  8. 重定向和请求转发后面加“return;”语句

    请求转发  RequestDispatcher 重定向     Redirect 代码的执行: 无论是 request.getRequestDispatcher(path).forward(reque ...

  9. Selenium运用-漫画批量下载

    今天我们要爬去的网站是http://comic.sfacg.com/.漫画网站一般都是通过JavaScript和AJAX来动态加载漫画的,这也就意味着想通过原来爬取静态网站的方式去下载漫画是不可能的, ...

  10. 重叠IO

    一. 异步IO        说到重叠模型首先还是提一下异步IO比较好,因为从本质上讲,重叠模型也是一种异步IO模型.       我们知道,相对于计算机执行的其他操作而言,设备IO(文件.管道.套接 ...