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

方法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. python 基础技巧

    多个字典合并 >>> d1 = {'name' : 'revotu', 'age' : 99} >>> d2 = {'age' : 24, 'sex' : 'mal ...

  2. windows系统下mysql-8.0.13-winx64(zip安装)

    一.下载地址: http://mirrors.163.com/mysql/Downloads/MySQL-8.0/mysql-8.0.13-winx64.zip 二.安装: 1.解压: mysql根路 ...

  3. ASP.NET的checkboxlist,RadioButtonList,FileUpload,image控件的综合使用

    一.拖控件 控件拖完如图所示:(有些是对不齐的,加一个表单就好了,把他们都放在表单里) 单纯的RadioButton是不能只选择一个的,除非你手动给他们加上代码: RadioButton1.Group ...

  4. Linux学习笔记:【000】Linux系统入门

    什么是Linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX(可移植操作系统接口 Portable Operating System Interface of UN ...

  5. PostMan打不开怎么解决

    如题: 解决办法: 1.找到以下两个路径直接删除文件,注安装路径不同有可能不同 C:\Users\Administrator\AppData\Roaming\Postman C:\Users\Admi ...

  6. web.xml之<context-param>与<init-param>的区别与作用【转】

    引用自-->http://www.cnblogs.com/hzj-/articles/1689836.html <context-param>的作用:web.xml的配置中<c ...

  7. mysql 用户及权限管理 小结

    MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命 ...

  8. Gym 100820C(级别排序 **)

    题意是说有一些人参加了不同级别的班,级别有 lower,middle,upper 三种,级别可以组合,出现比如 lower upper,middle upper 这种级别,级别的比较是从右往左,如果在 ...

  9. vue-if与vue-show的区别

    两者都是动态显示DOM元素   不同点: 1.使用方式 v-if是根据后面数据的真假,来判断DOM的添加删除等操作 v-show只是在修改元素的css样式(display属性值)   2.实现过程 v ...

  10. 自定义类使用泛型and方法使用泛型

    使用泛型的自定义类,泛型可以使用任意的数据类型,在创建对象的时候确定是什么数据类型,创建对象的时候不使用泛型,那就默认是Object类型 格式: 使用泛型的自定义类 package cn.zhuobo ...