2012-06-23 105 views
0

我試圖運行Visual C++ 2008 Express Edition這個小程序:C++矢量誤差(的Visual C++ 2008年速成版)

#include <vector> 
int main(){ 
vector<bool> features(4,false); 
for(vector<bool>::iterator i = features.begin(); i != features.end(); i++){ 
cout<<features[i]; 
} 
} 

當我這樣做,我得到如下:

1>------ Build started: Project: SFS, Configuration: Debug Win32 ------ 
1>Compiling... 
1>SFS.cpp 
1>.\SFS.cpp(1) : warning C4627: '#include <vector>': skipped when looking for precompiled header use 
1>  Add directive to 'stdafx.h' or rebuild precompiled header 
1>.\SFS.cpp(14) : fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source? 
1>Build log was saved at "file://c:\Users\Ola\Documents\Visual Studio 2008\Projects\SFS\SFS\Debug\BuildLog.htm" 
1>SFS - 1 error(s), 1 warning(s) 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

我也收到以下錯誤信息:

enter image description here

EDIT(1)

我添加#include "stdafx.h"後,我得到如下:

1>------ Build started: Project: SFS, Configuration: Debug Win32 ------ 
1>Compiling... 
1>SFS.cpp 
1>.\SFS.cpp(5) : error C2065: 'vector' : undeclared identifier 
1>.\SFS.cpp(5) : error C2062: type 'bool' unexpected 
1>.\SFS.cpp(6) : error C2065: 'vector' : undeclared identifier 
1>.\SFS.cpp(6) : error C2062: type 'bool' unexpected 
1>.\SFS.cpp(6) : error C2039: 'iterator' : is not a member of '`global namespace'' 
1>.\SFS.cpp(6) : error C2065: 'i' : undeclared identifier 
1>.\SFS.cpp(6) : error C2065: 'features' : undeclared identifier 
1>.\SFS.cpp(6) : error C2228: left of '.end' must have class/struct/union 
1>  type is ''unknown-type'' 
1>.\SFS.cpp(6) : error C2065: 'i' : undeclared identifier 
1>.\SFS.cpp(6) : error C2143: syntax error : missing ';' before ')' 
1>.\SFS.cpp(6) : error C2143: syntax error : missing ';' before ')' 
1>.\SFS.cpp(6) : error C2143: syntax error : missing ';' before '{' 
1>.\SFS.cpp(7) : error C2065: 'cout' : undeclared identifier 
1>.\SFS.cpp(7) : error C2065: 'features' : undeclared identifier 
1>.\SFS.cpp(7) : error C2065: 'i' : undeclared identifier 
1>Build log was saved at "file://c:\Users\Ola\Documents\Visual Studio 2008\Projects\SFS\SFS\Debug\BuildLog.htm" 
1>SFS - 15 error(s), 0 warning(s) 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

除了相同的錯誤消息框。

EDIT(2)

我添加#include<iostream>和使用std::cout後,我得到如下:

1>------ Build started: Project: SFS, Configuration: Debug Win32 ------ 
1>Compiling... 
1>SFS.cpp 
1>.\SFS.cpp(1) : warning C4627: '#include <iostream>': skipped when looking for precompiled header use 
1>  Add directive to 'stdafx.h' or rebuild precompiled header 
1>.\SFS.cpp(2) : warning C4627: '#include <vector>': skipped when looking for precompiled header use 
1>  Add directive to 'stdafx.h' or rebuild precompiled header 
1>.\SFS.cpp(16) : fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source? 
1>Build log was saved at "file://c:\Users\Ola\Documents\Visual Studio 2008\Projects\SFS\SFS\Debug\BuildLog.htm" 
1>SFS - 1 error(s), 2 warning(s) 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

除了相同的錯誤消息框。

這是爲什麼?我該如何解決這個問題?

謝謝。

+1

錯誤提到了預編譯頭文件。請關閉你的項目並重建 – RvdK

+0

如果我認爲你的發佈代碼是SFS.cpp的compelet內容,我會添加「#include 」,並用「std :: cout」替換「cout」。 –

+0

查看編輯答案。另外,請不要對您的問題做出重大修改。向另一個問題詢問另一個問題。 –

回答

1

奇怪的MSVS的東西。你包含的第一個文件是"stdafx.h"?它應該是。

另外,做一個乾淨的構建(重建或清理/構建)。

#include "stdafx.h" 
#include <vector> 
int main(){ 
vector<bool> features(4,false); 
for(vector<bool>::iterator i = features.begin(); i != features.end(); i++){ 
cout<<features[i]; 
} 
} 

或者您可以關閉在項目屬性中使用預編譯頭進行構建的選項。

您還需要:

#include <vector> 

std::vector取代vector

+0

如何關閉在項目屬性中使用預編譯頭進行構建的選項?謝謝 – Simplicity

+0

@ Med-SWEng你不需要,只是包括stdafx.h –

+0

我不斷收到一個錯誤,即使添加此... – Simplicity

0

也許我不知道答案,但這對我有用。

#include <iostream> 
#include <vector> 

int main(){ 
    std::vector<bool> features(4,false); 
    for(std::vector<bool>::iterator i = features.begin(); i != features.end(); i++){ 
     std::cout<< (*i); 
    } 
} 
0

嘗試是這樣的:

#include "stdafx.h" 

#include <vector> 
#include <iostream> 

using namespace std; 

int main() 
{ 
    vector<bool> features(4,false); 
    for(vector<bool>::iterator i = features.begin(); i != features.end(); i++) 
    { 
     cout << *i; 
    } 
} 

在VS2010你可以關閉預編譯頭下的項目屬性C/C++款,預編譯器小節。

0

我遇到了同樣的問題。我用

#include <vector> 

std::vector,而不是vector,但問題依然存在。後來,我嘗試添加以下行:

using namespace std; 

和所有的錯誤了!

我想知道爲什麼?最後,我想出了當我定義一個二維向量時,我使用了:std::vector<vector<double>> myVector;,如果沒有指定std命名空間,應該是:std::vector<std::vector<double>> myvector;