为啥我不能在我的程序中声明一个字符串:“字符串是未声明的标识符”

Posted

技术标签:

【中文标题】为啥我不能在我的程序中声明一个字符串:“字符串是未声明的标识符”【英文标题】:Why can't I declare a string in my program: "string is undeclared identifier"为什么我不能在我的程序中声明一个字符串:“字符串是未声明的标识符” 【发布时间】:2011-10-02 07:26:33 【问题描述】:

我不能在我的程序中声明一个字符串:

string MessageBoxText = CharNameTextBox->Text;

它只是不起作用。它说string is undeclared identifier。我在命名空间或包含或类似的东西中缺少什么?

【问题讨论】:

谁说CharNameTextBox->Text 可以转换为std::string? 【参考方案1】:

确保您已包含此标头:

#include <string>

然后使用std::string 而不是string。这是因为string 是在std 命名空间中定义的。

并且不要在命名空间范围内写这个:

using namespace std; //bad practice if you write this at namespace scope

但是,在函数范围内编写它并没有那么糟糕。但最好的是我之前建议的:

使用std::string

std::string MessageBoxText = CharNameTextBox->Text;

【讨论】:

我在我的程序中应该把它放在哪里,我已经尝试过,但是无论我放在哪里,我都会收到一百行错误 它必须位于文件顶部的任何其他代码之外。也许发布一些代码? 你确定你编译的是 C++ 而不是 C? 请不要向初学者推荐using namespace std; 如果它只是 c 的话,我认为它不会被称为 Visual c++ :/【参考方案2】:

要在 C++ 中使用标准的 string 类,您需要 #include &lt;string&gt;。添加 #include 指令后,string 将在 std 命名空间中定义,您可以将其称为 std::string

例如

#include <string>
#include <iostream>

int main()

    std::string hw( "Hello, world!\n" );
    std::cout << hw;
    return 0;

【讨论】:

我刚刚编辑了斯科特的答案以使其更好,然后刷新页面,它也显示了你的。 +1。【参考方案3】:

您是否以任何方式使用 C++/CLI(.NET 的 Microsoft 扩展)而不是标准 ISO C++ 进行编译?

在这种情况下,您应该执行以下操作:

System::String^ MessageBoxText = CharNameTextBox->Text;

另见以下文章:

How to: Convert Between Various String Types How to: Convert System::String to Standard String How to: Convert Standard String to System::String

【讨论】:

以上是关于为啥我不能在我的程序中声明一个字符串:“字符串是未声明的标识符”的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的经典 ASP 页面不能在我的 ASP.NET 应用程序的根目录中运行?

为啥 LINQ 在我的查询中使用错误的数据类型,而它在 EF 架构中被正确声明?

为啥 heroku 不能在我的反应应用程序中使用代理?

为啥我不能在我的导航控制器中推送视图控制器?

为啥我不能在我的 docker 容器中运行 phpinfo()?

Android:为啥我不能使用“Intent”移动到另一个Activity?