一、在考慮計算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了