2016-08-23 1 views
-2

J'ai le code ci-dessousPourquoi je ne peux pas utiliser de chaîne?

#include <iostream> 
#include <string> 

main(){ 
    std::cout << "What's Your Name? "; 
    string x = ""; 
    std::cin >> x; 
    std::cout << std::endl << "Nice to meet you " << x << "!" << std::endl; 
} 

Et je reçois cette erreur

Running /home/ubuntu/workspace/client.cpp 
/home/ubuntu/workspace/client.cpp: In function ‘int main()’: 
/home/ubuntu/workspace/client.cpp:6:5: error: ‘string’ was not declared in this scope 
    string x = ""; 
    ^
/home/ubuntu/workspace/client.cpp:6:5: note: suggested alternative: 
In file included from /usr/include/c++/4.8/iosfwd:39:0, 
       from /usr/include/c++/4.8/ios:38, 
       from /usr/include/c++/4.8/ostream:38, 
       from /usr/include/c++/4.8/iostream:39, 
       from /home/ubuntu/workspace/client.cpp:1: 
/usr/include/c++/4.8/bits/stringfwd.h:62:33: note: ‘std::string’ 
    typedef basic_string<char> string; 
           ^
/home/ubuntu/workspace/client.cpp:6:12: error: expected ‘;’ before ‘x’ 
    string x = ""; 
      ^
/home/ubuntu/workspace/client.cpp:7:17: error: ‘x’ was not declared in this scope 
    std::cin >> x; 
       ^

Pourquoi suis-je pas en mesure d'utiliser une chaîne? Je l'utilise avec Cloud9, et je suis relativement nouveau en C++. Comment puis-je transférer l'entrée de cin à la chaîne x?

+8

'std :: CHAINE' pas' CHAINE' – jaggedSpire

+1

Side note: il est 'int main()', bare-bones 'main()' est [mal -formed] (http://stackoverflow.com/questions/331148/does-c-allow-default-return-types-for-functions) – dhke

+1

Pour les petits projets comme celui-ci, vous pouvez faire un 'using namespace std;' right après les inclus. – sp2danny

Répondre

4

Vous devez spécifier l'espace de noms: changement string-std::string

+2

Ajout: C'est parce que 'string' en tant que tel n'existe pas en C++ natif et ne peut être utilisé que parce qu'il est défini dans' '. Parce qu'il se trouve dans l'espace de noms 'std', vous devez écrire std :: string au lieu de string. Vous pouvez en effet faire un typedef ('typedef chaîne std :: string') ou utiliser une définition:' #define STRING std :: string' –

+2

... ou vous pouvez utiliser 'using std :: string' – jaggedSpire

+0

Je n'ai jamais vu que dans C++ mais plus vous savez ... thx –