2017-07-18 209 views
0

根据this后,我试图包括在一个MessageBox一个新行象下面这样:C++标识符“环境”未定义

std::wstring msg = "Text here" + Environment.NewLine + "some other text"; 

MessageBox(nullptr, msg.c_str(), L"Hello World!", MB_ICONINFORMATION); 

但是编译器生成的错误:

E0020: identifier "Environment" is undefined

我试图包括<windows.system.h>,但它什么也没做。

项目类型:C++ ATL

在此先感谢。

+0

它不应该是环境:: NewLine(不知道实际的包...) – user2717954

+0

@ user2717954然后编译器说'E0276 - 名称后跟'::'必须是类或名称空间名称。 :-( – GTAVLover

+0

抱歉只是猜测:)那么什么是环境? – user2717954

回答

1

您不能在您的本机C++应用程序中包含Environment.NewLine,因为它是.NET构造。对于在标准C换行符++使用std::endl'\n'字符:

#include <iostream> 
int main(){ 
    std::cout << "Hello World." << std::endl; 
    std::cout << "This prints\n text on two lines."; 
} 

用于换行的MessageBox WinAPI的功能使用\r\n字符。您的代码应该是:

#include <Windows.h> 
#include <string> 
int main(){ 
    std::wstring msg = L"Text here \r\n some other text"; 
    MessageBox(NULL, msg.c_str(), L"Hello World!", MB_ICONINFORMATION); 
} 
+0

当我尝试使用'+“\ n”+'换行时,编译器说:'E2140 - 表达式必须具有整型或无范型枚举类型。 – GTAVLover

+1

@GTAVLover请看我更新的答案。 – Ron

+0

这工作得很好!感谢帮助。 :-) – GTAVLover

1

Environment.NewLine在C#中使用,如在该职位在C++中它是Environment::NewLine

对于新行,您可以使用"\n"

+0

但为什么编译器说'Environment'不是类或名称空间的名称?它在C++中不可用吗?或者我需要添加'using'指令,比如'using namespace Environment'? – GTAVLover

+1

@GTAVLover您没有正确的项目类型,要使用环境,您将需要一个基于.net的项目,如CLI/CLR – meJustAndrew

+0

谢谢,那么''\ n“'唯一的方法是在ATL项目? – GTAVLover