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了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM