2016-07-18 24 views
-2

有人可以解釋C++中這兩行代碼之間的區別嗎?我得到一個非常輸出不同的比我預期的使用IOStream的C++中的字符串操作/錯誤

string s1 = 'abcd' 

string s2 = 'ef' 

首先輸入:不正確

輸入:

cout << s1.size() + " " + s2.size() << endl; 

輸出:; d

第二個輸入:正確

輸入:

cout << s1.size() << " " << s2.size() << endl; 

輸出:4 2

我編譯並運行它關閉HackerRank服務器的挑戰之一,是不肯定爲什麼結果是不同的。

+0

請發佈一個[MCVE]重現您的問題。至於你的問題是無用的。 –

+1

你在第一個中使用整數加法......你會期待什麼樣的結果? :) –

+0

請發佈代碼,如果你想要任何答案。你發佈的內容不完整,很難理解你想要達到的目標。 – kadina

回答

0

不能隱式std::size_t變量添加到const char*(即在代碼中" "),並達到預期的效果,你必須做的:

std::cout << std::to_string(s1.size()) + " " + std::to_string(s2.size()) << std::endl; 

(即轉換std::size_t值首先爲字符串然後連接一個空格)。

+0

謝謝,這有很多幫助,我一直使用Python來創建我的腳本,所以我習慣編譯器在打印語句中理解不同的數據類型。 – Dragon