zoukankan      html  css  js  c++  java
  • C/C++格式化输入,输出

    C/C++格式化输入,输出

    1.C语言

    1. 语言函数

    scanf();
    printf();
    sscanf()   --> 不安全   
    sscanf_s() ---> 安全 
    sprintf()  --> 不安全 ----> sprintf_s()
    

    2. 说下遇到的坑

    string s1,s2;
    int i=0;
    sscanf(dest,"%d,%s,%s",&i,s1,s2); //    -->如果时这样写的会 编译可以会过,但是在运行的时候就会出现异常。
    /* 
       所以在写的时候就要写C语言的类型,char* 其次该函数是不安全的函数,所以在使用的时候使用```sscanf_s()```,
    sprintf()函数也是一样的问题,应该使用sprintf_s()函数
    */
    
    

    2.C++

    1. 利用stringstream 流进行处理,安全
      • stringstream 中包含
        + istringstream (输入)
        + ostringstream(输出)
    2. stringstream 流出时遇到 逗号,回车时问题
    	string s = "1 1.3 aaa a ";
    	string s1 = "abc,1,abcdef,abcdefg,aab";
    	stringstream ss;
    	ss << s;
    	int ia = 0;
    	double db = 0.0;
    	string sc = "";
    	char cd = ' ';
    	
    	ss >> ia;
    	cout << "ia -> " << ia << endl;
    	
    	ss >> db;
    	cout << "db -> " << db << endl;
    
    	ss >> sc;
    	cout << "sc -> " << sc << endl;
    
    	ss >> cd;
    	cout << "cd -> " << cd << endl;
    
    	ss.clear();
    	cout << "*****************************" << endl;
    
    	ss << s1;
    	//ss >> sc;
    	//cout << sc << endl;
    	while(ss >> sc) {cout << sc << endl;}
    

    结果:

    3.利用stringstream类型转换

    可以把任意类型转换成字符串

    	template<class T>
        void to_string(string & s;T &val)
        {
        	stringstream ss << val;
            s = ss.str();
        }
    

    4.C++格式化

    1. cin >> noskipws -- > 不忽略任意地方空格
    2. hex控制输出的格式,默认为dec(十进制),可手动设置dec,hex,oct。
    3. setiosflags 为控制格式,ios::uppercase 为输出大写十六进制格式,也可以省略setiosflags直接写uppercase.一共有7种格式
            setiosflags(ios::fixed)  //---> 固定的浮点显示
            setiosflags(ios::scientific)  //--- 指数表示
            setiosflags(ios::left) //---左对齐
            setiosflags(ios::right) //---右对齐
            setiosflags(ios::skipws) //--- 忽略前导空白
            setiosflags(ios::uppercase) //--- 16进制数大写输出
            setiosflags(ios::lowercase) //---16进制数小写输出
    
  • 相关阅读:
    0 RabbitMQ概念
    java 排序
    spring整合redis(基于redisTemplate)
    http之content-type
    http协议讲解
    Java8 lambda 以及 Lambda在集合中的使用
    java中decimalFormat格式化数值
    找出占用的端口进程ID,并且杀死该进程
    CSS
    标签
  • 原文地址:https://www.cnblogs.com/Kernel001/p/10041866.html
Copyright © 2011-2022 走看看