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了