• c++ vector 遇到的一些小问题


    c++ vector 遇到的一些小问题 - 宦传建 - 博客园

    c++ vector 遇到的一些小问题

    一、在考虑计算vector<int>中元素时需要将string转换成int:

    C#中语法

    string text;
    int i = int.Parse(text);

    虽说肯定不是这样,C++兼容C,像下面这样写还是会报错

    #include<stdlib.h>//注意头文件
    
    int i = int(text);

    查了一下,发现下面这种写法ok = =

    复制代码
    #include<stdlib.h>
    //函数就省略了
    
    /*C++中将string转换成int,首先需要转换成char*,然后再调用atoi方法,这是由于在C++中、string已经属于类,在C#中类似的是装箱拆箱操作(值类型和引用类型相互转换,会产生中间量temp)暂且这样理解吧,先做一下记录,防止忘了*/
    
    string text;
    
    int i = atoi(text.c_str());//c_str()表示返回一个C sytle的字符串
    复制代码

    类似的还有string转float等

    float f = atof(text.c_str());

    二、关于cin

    我的代码:

    复制代码
    string text;//接受标准输入
    
    vector<int> v_value;
    
    cout << "请输入一组整数:(形如1 2 3 4 5 6。。。)" << endl;
    
    //读入一组数到v_value
    while(cin >> text)
    {
        v_value.push_back(atoi(text.c_str()));
    }
    复制代码

    现在我想知道输入什么时候结束!

    下面这解释的不错,引用一下

    复制代码
    /*
    cin是个对象,>>输入操作符返回流对象的引用,
    cin >> x 返回istream&,cout << x返回ostream&
    
    if可直接判断流,如if (cin)
    while间接判断,如while (cin >> x)
    若流被标记错误(读取失败)就返回false.
    ctrl+z,F6可跳出循环,这代表eof(文件结束符)
    */
    复制代码

    这就很好理解啦,我的while循环只需要在输完一行,在下一行ctrl+z或F6就可以跳出循环了。

    其实关于标准IO,还是很有学问的,需要的时候仔细查阅参考书就ok了

  • 相关阅读:
    网络编程之Tcp,udp
    网络编程简介
    面向对象之高级篇 反射,元类
    面向对象 高级篇
    面向对象,继承
    初识面向对象
    包 hashlib,logging
    模块
    Dango生命周期回顾与forms组件
    Django中auth登录、注册、修改密码、退出、ORM自关联
  • 原文地址:https://www.cnblogs.com/lexus/p/2564499.html
Copyright © 2020-2023  润新知