【发布时间】:2016-12-06 01:35:14
【问题描述】:
我对 C++ 非常陌生,我正在尝试编写一个简单的程序来询问一个人的姓名,然后将其打印回给他们。当我使用 int 类型变量执行完全相同的程序时,它运行良好。然而,当我用字符串类型替换它时,它给了我一个“调试断言失败!”输入我的名字后的消息。 这是程序:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int main(string name)
{
cout << "What is your name?" << endl;
cin >> name;
cout << endl << "Your name is " << name << "." << endl;
return 0;
}
你们能指出我为什么会失败吗?我似乎无法在其他地方找到相关线程。谢谢。
【问题讨论】:
-
int main(string name)不是有效的 C++。将其更改为int main(int argc, char* argv[])并创建一个局部变量std::string name;。 -
除了代码的实际问题之外,“Debug Assertion Failed”消息总是带有额外的信息。它可能对您没有任何意义(因为您是 C++ 新手),但它是有用且重要的。请把它包括在你的问题中。请注意,您可以按 Ctrl+C 将 Windows 消息框复制到剪贴板。
-
main没有重载以将std::string作为一个参数。而是在argv[1]或 2.. 中传递您的字符串,然后将其分配给本地字符串变量或直接使用它 -
@πάνταῥεῖ 我仍然想知道为什么它是“调试断言”而不是硬链接错误......
-
@SergeyA
main()接受几乎所有参数声明而不会出现链接器错误,因为参数解释是从启动代码完成的。main入口点只是一个汇编符号。
标签: c++ visual-c++