今天真是试了各种方法,笨方法聪明方法都有了

方法1:一个字符一个字符的读取

方法2:借助strtok实现split 适用于char

方法3:借助istringstream实现split 适用于string

// 方法1:一个字符一个字符读取
#include <iostream>
#include <string>
#include <fstream>
#include <stdlib.h>
using namespace std;
int main()
{
    ifstream fin("data.txt");
    if(! fin.is_open())
    {
        cout<<);
    }
    char str;
    ];
    ;num[i] = ;
    bool IsNegative = false;
    while(!fin.eof()){
        fin.read(&str,);
        if(str == ' '){
            if(IsNegative) num[i] = -num[i];
            printf("%d ",num[i]);
            i += ;num[i] = ;
            IsNegative = false;
        }
        else if(str == '\0' || str == '\n'){
            if(IsNegative) num[i] = -num[i];
            printf("%d ",num[i]);
            i += ;num[i] = ;
            break;
        }
        else if(str == '-'){
            IsNegative = true;
        }
        else{
            num[i] = num[i]* + (str-');
        }
    }
    ;
}
//方法2:借助strtok实现split 适用于char
#include <iostream>
#include <string>
#include <fstream>
#include <string.h>
#include <stdio.h>
using namespace std;
int ReadNum(char *str){
    ;
    ;
    ] == '-'){
        i += ;
    }
    while(str[i]){
        num = (str[i]-;
        i += ;
    }
    ] == '-'){
        num = -num;
    }
    return num;
}

int main()
{
    ifstream fin("data.txt");
    if(! fin.is_open())
    {
        cout<<);
    }
    ];
    ];;
    fin.getline(s,);
    const char *d = " ";
    char *p;
    p = strtok(s,d);
    while(p)
    {
            num[i] = ReadNum(p);
            printf("%d ",num[i]);
            i+=;
            p=strtok(NULL,d);
    }
    ;
}
//方法3:借助istringstream实现split 适用于string
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
using namespace std ;
int ReadNum(string str){
    ;
    ;
    ] == '-'){
        i += ;
    }
    while(str[i]){
        num = (str[i]-;
        i += ;
    }
    ] == '-'){
        num = -num;
    }
    return num;
}
int main(){
    ifstream fin("data.txt");
    if(! fin.is_open())
    {
        cout<<);
    }
    string str;
    getline(fin, str);
    string sTmp;
    istringstream istr(str);
    ];;
    while(!istr.eof()){
        istr >> sTmp; //get a word
        num[i] = ReadNum(sTmp);
        printf("%d ", num[i]);
        i += ;
    }
    ;
} 

C++ 读取字符串中的数字的更多相关文章

  1. java 判断一个字符串中的数字:是否为数字、是否包含数字、截取数字

    题外话: JavaScript中判断一个字符是否为数字,用函数:isDigit(); 一.判断一个字符串是否都为数字 package com.cmc.util; import java.util.re ...

  2. 写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串

    写出将字符串中的数字转换为整型的方法,如:"as31d2v"->312,并写出相应的单元测试,输入超过int范围时提示不合法输入. public struct Convert ...

  3. SQL Server 2008 R2——创建函数 筛选出字符串中的数字 筛选出字符串中的非数字

    =================================版权声明================================= 版权声明:本文为博主原创文章 未经许可不得转载  请通过右 ...

  4. Excel中如何提取字符串中的数字

    取字符串中的数字,假如数据在A列,提取公式为 =LOOKUP(9^9,--MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&5^19)),ROW($1:$99) ...

  5. C# 使用正则表达式去掉字符串中的数字,或者去掉字符串中的非数字

            /// 去掉字符串中的数字           public static string RemoveNumber(string key)           {            ...

  6. C++ 提取字符串中的数字

    C++ 提取字符串中的数字 #include <iostream> using namespace std; int main() { ] = "1ab2cd3ef45g&quo ...

  7. java截取字符串中的数字

    java从字符串中提取数字 随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取 ...

  8. python(15)提取字符串中的数字

    python 提取一段字符串中去数字 ss = “123ab45” 方法一:filter filter(str.isdigit, ss) 别处copy的filter的用法: # one>> ...

  9. 用sql获取某字符串中的数字部分的语句

    create function dbo.F_Get_No ( @No varchar(100) ) RETURNS bigint AS BEGIN WHILE PATINDEX('%[^0-9]%', ...

随机推荐

  1. mybtis 基础

    一.什么是mybatis MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBati ...

  2. Hbase_02、Hbase的常用的shell命令&Hbase的DDL操作&Hbase的DML操作(转)

    阅读目录 前言 一.hbase的shell操作 1.1启动hbase shell 1.2执行hbase shell的帮助文档 1.3退出hbase shell 1.4使用status命令查看hbase ...

  3. 01--STL算法(算法基础)

    一:算法概述 算法部分主要由头文件<algorithm>,<numeric>和<functional>组成. <algorithm>是所有STL头文件中 ...

  4. springboot下整合各种配置文件

    本博是在springboot下整合其他中间件,比如,mq,redis,durid,日志...等等  以后遇到再更.springboot真是太便捷了,让我们赶紧涌入到springboot的怀抱吧. ap ...

  5. Linux记录-JMX监控JAVA进程

    3.修改xxx.sh 加入export JAVA_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.mana ...

  6. Ubuntu 开启SSH服务以及有关设置:安装,指定端口号、免密登录、远程拷贝

    本文所用系统为 Ubuntu 18.04   什么是SSH?     简单说,SSH是一种网络协议,用于计算机之间的加密登录.全名为:安全外壳协议.为Secure Shell的缩写.SSH为建立在应用 ...

  7. Oracle了解(一)

    通常所说的Oracle数据库服务器由一个数据库和至少一个数据库实例组成. 数据库实例是由系统后台进程和分配的内存区域构成 实例你是提供服务的进程,数据库是存放的数据. 数据库是存储数据的文件 数据库实 ...

  8. 自学python 4.

    1.li = ["alex","tom","mike","god","merffy"](1)a = ...

  9. Django聚合与分组查询中value与annotate的顺序问题

    在学习Django聚合与分组查询中,发现value与annotate的顺序不同时,查询结果大相径庭,经过一下午的研究,终于弄明白了,现在分享给大家,先上结论: 结论 value在annotate前面时 ...

  10. 细说shiro之一:shiro简介

    官网:https://shiro.apache.org/ 一. Shiro是什么Shiro是一个Java平台的开源权限框架,用于认证和访问授权.具体来说,满足对如下元素的支持: 用户,角色,权限(仅仅 ...