2013-07-05 62 views
2

我有這個簡單的代碼:自動方式,不是演繹字符串類型

#include <string> 
#include <iostream> 

using namespace std; 

int main() { 
    string s1 = "rohit"; 
    auto len = s1.size(); 

    cout << len; 
} 

當我編譯在Ubuntu 12.04這個代碼,它顯示了以下錯誤:

test.cc: In function ‘int main()’: 
test.cc:8:10: error: ‘len’ does not name a type 
    auto len = s1.size(); 
     ^
test.cc:10:13: error: ‘len’ was not declared in this scope 
    cout << len; 
      ^

我有g ++ 4.8.1。 g ++ 4.8.1中關鍵字auto的用法有所變化嗎?

+3

嘗試使用'-std = C++ 11'編譯# – 0x499602D2

+0

@yngum。那麼,那工作。這讓我感到驚訝。我的系統中沒有C++ 11嗎?我已經有最新版本的'g ++'了。 –

+0

@RohitJain:您需要通過指定'std = C++ 11'編譯器標誌來在G ++中啓用C++ 11編譯。 –

回答

5

error: ‘len’ does not name a type使我相信你沒有在C++ 11模式下編譯,並且它使用關鍵字auto的舊的C++ 98含義。

+0

@MarkB ..工作。這讓我感到驚訝。我的系統中沒有C++ 11嗎?我已經有了最新版本的g ++。 –

+0

@RohitJain對C++ 11的支持與編譯器的默認設置不同。 – 2013-07-05 18:37:07

+0

@ H2CO3。好。那麼,我應該如何設置默認設置? –