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了

你可能感兴趣的:(vector)