1. 程式人生 > >VS—— warning C4018 && error C2679

VS—— warning C4018 && error C2679

 warning C4018: “<”: 有符號/無符號不匹配

出錯程式碼:

 for(int j=0;j<detector.size();j++)

出錯原因分析: detector 是一個Vector容器 ,detecot.size() 在容器說明中 被定義為: unsigned int 型別, 而j是int 型別 所以會出現: 有符號/無符號不匹配警告
錯誤改正: 定義j為unsigned型別後就可以了

即: for(unsigned int j=0;j<detector.size();j++)
或者: for(size_t int j=0;j<detector.size();j++)

error C2679: 二進位制“<<”: 沒有找到接受“_Ty1”型別的右運算元的運算子(或沒有可接受的轉換)


很奇怪,以前在其他IDE上這麼寫都沒有問題,不知道為什麼在VS寫就出現了這個錯誤,我一開始以為是我的程式碼的問題。可是怎麼想都沒有想通。 
甚至,我自己在main函式中又寫了一遍之後,還是報一樣的錯誤。

#include <iostream>
using namespace std;
int main(){
    string s;
    cin >> s;
    cout << s;
}

解決方法很簡單: 
在程式碼前面加一句

#include <string>

就好了