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了

转载于:https://www.cnblogs.com/huanchuanjian/archive/2012/06/20/2556207.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值