控制台应用程序c ++

时间:2009-11-19 02:12:38

标签: c++ console

我是控制应用程序的新手,并希望得到一些指示......

我创建了一个新的控制台应用程序(未完成但应该正常工作),我选择了win32控制台应用程序,然后选择了“空项目”

这是我的代码:

#include <iostream>

void main() {

struct dude { 
    string name; 
    int age; 
} about; 

about.name = "jason"; 
about.age = 4000; 
cout << about.name << " " << about.age << endl;
}

我得到以下错误:

------ Build started: Project: Test, Configuration: Debug Win32 ------
Compiling...
codey.cpp
.\codey.cpp(6) : error C2146: syntax error : missing ';' before identifier 'name'
.\codey.cpp(6) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
.\codey.cpp(6) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
.\codey.cpp(10) : error C2039: 'name' : is not a member of 'main::dude'
        .\codey.cpp(5) : see declaration of 'main::dude'
.\codey.cpp(12) : error C2065: 'cout' : undeclared identifier
.\codey.cpp(12) : error C2039: 'name' : is not a member of 'main::dude'
        .\codey.cpp(5) : see declaration of 'main::dude'
.\codey.cpp(12) : error C2065: 'endl' : undeclared identifier
Build log was saved at "file://c:\Users\Jason\Documents\Visual Studio 2008\Projects\Test\Test\Debug\BuildLog.htm"
Test - 7 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

有人可以告诉我如何调试这个吗?我在这里做错了什么?

<小时/> 工作...

#include <iostream> 
#include <string> 

struct Dude { 
    std::string name; 
    int age; };

    int main(int i) 
    { 
        while(i<4000)
        {
            i++;
        using namespace std; 
        Dude jason = { "Jason", i }; 
        cout << jason.name << " is " << jason.age << " years old.\n"; 
        }

        return 0; 
    }

谢谢大家的帮助:D

4 个答案:

答案 0 :(得分:6)

正确的代码应如下所示:

#include <iostream>
#include <string> 
using namespace std;

struct dude {
  string name;
  int age;
};

int main() { 

  struct dude about;
  about.name = "jason";
  about.age = 4000;

  cout << about.name << " " << about.age << endl;
  return 0;
}

编辑:添加必要的包含以便编译。另外,作为最佳实践,在函数外部移动了类型定义。

答案 1 :(得分:6)

#include <iostream>
#include <string>

struct Dude {
  std::string name;
  int age;
};

int main() {
  using namespace std;
  Dude jason = { "Jason", 4000 };
  cout << jason.name << " is " << jason.age << " years old.\n";
  return 0;
}

没有特别的顺序:

  • 在函数之外定义您的类型
  • 名称类型一致(“Dude”在这里)
  • 在初始化对象时提供值
    • 我在这里使用了聚合初始化,当你编写一个构造函数(ctor)时,你将使用稍微不同的语法
  • C ++ stdlib几乎完全位于std命名空间中
    • 如果您愿意,可以在功能范围内放置using namespace std;,而不是在该功能正文中键入std::
  • C ++ stdlib字符串类型来自<string>标题
  • main return int

修复这些问题并不是真正的调试,你只需要学习正确的语法。确保你有一本好书(例如Koenig和Moo的Accelerated C ++),好老师也不会受伤。

答案 2 :(得分:2)

Joy's answer外,您还需要使用std命名空间:

std::cout << about.name << " " << about.age << endl;

另外,你想要实现什么目标?如果dude是一个班级,可能会更好吗?

答案 3 :(得分:2)

您的意思是如何将其转换为编译

你忘记了

using namespace std;

我认为你应该pick up a good C++ book,花一些时间阅读它,然后来到网站。只是一个真诚的建议,没有冒犯。