我正在爲數據結構類的項目工作。我們的目標是用一棵樹來判斷隱喻性的小矮人是否可以用比喻性的鑽石來支付隱喻性的稅收。輸入以格式「3 1 2 3 3 1 2 3」的字符串形式給出,這意味着3個鑽石的價值1 2 3和3個稅費用爲1 2 3.定義字符串in-code與控制檯輸入之間的區別
我遇到的問題不是從樹的實現,但處理解析輸入的方式,我可以將它插入到樹中,特別是:當我直接在代碼中輸入值時,它會給出正確的輸出,但是當使用cin輸出run陷入一些問題。
用下面的代碼:
string str;
str = "5 1 2 3 4 5 5 1 2 3 4 5";
str.erase(remove_if(str.begin(), str.end(), ::isspace), str.end());
char ch[str.size()];
strcpy(ch, str.c_str());
int numDiamonds = ch[0] - '0';
cout<<numDiamonds<<" diamonds"<<endl;
int counter = 1;
for(int i = 1; i < numDiamonds+1; ++i){
int out = ch[i] - '0';
cout<<out;
cout<<" ";
++counter;
}
cout<<endl;
int numTaxes = ch[numDiamonds+1] - '0';
cout<<numTaxes<<" taxes"<<endl;
for(int i = counter+1; i < str.size(); ++i){
int out = ch[i] - '0';
cout<<out;
cout<<" ";
}
cout<<endl;
}
我的輸出顯示正確的,如下:
5 diamonds
1 2 3 4 5
5 taxes
1 2 3 4 5
,但是當我改變 「海峽= 5 1 ...」 到「CIN >> str「我的輸出顯得混亂,是以下。
5 diamonds
-48 -48 -48 -48 -48
-20 taxes
1 diamonds
-48
-48 taxes
2 diamonds
-48 -48
-48 taxes
3 diamonds
-48 -48 -48
-48 taxes
4 diamonds
-48 -48 -48 -48
-48 taxes
5 diamonds
-48 -48 -48 -48 -48
-20 taxes
5 diamonds
-48 -48 -48 -48 -48
-20 taxes
1 diamonds
-48
-48 taxes
2 diamonds
-48 -48
-48 taxes
3 diamonds
-48 -48 -48
-48 taxes
4 diamonds
-48 -48 -48 -48
-48 taxes
5 diamonds
-48 -48 -48 -48 -48
-20 taxes
谷歌搜索再多幫助解決了我的問題,所以我把你們。有沒有解釋爲什麼cin進入一個字符串有不同的行爲,而不是在代碼中定義字符串?
謝謝!
嘗試打印輸入數據後的字符串。 – 2012-02-10 07:03:59