C++ cli 试图将文本字段值写入c++;
我为这个错误感到非常愤怒C++ cli 试图将文本字段值写入c++;,c++-cli,C++ Cli,我为这个错误感到非常愤怒 ------ Build started: Project: shotfactorybatchgen, Configuration: Debug Win32 ------ shotfactorybatchgen.cpp c:\documents and settings\administrator\my documents\visual studio 2010\projects\shotfactorybatchgen\shotfactorybatchgen\For
------ Build started: Project: shotfactorybatchgen, Configuration: Debug Win32 ------
shotfactorybatchgen.cpp
c:\documents and settings\administrator\my documents\visual studio 2010\projects\shotfactorybatchgen\shotfactorybatchgen\Form1.h(307): error C2664: 'fprintf' : cannot convert parameter 2 from 'System::String ^' to 'const char *'
No user-defined-conversion operator available, or
Cannot convert a managed type to an unmanaged type
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
我环顾了所有的互联网络,但找不到答案。下面是发生错误的代码
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Decimal value;
if(!Decimal::TryParse(textBox4->Text, value)) {
MessageBox::Show("Non-numeric characters detected in 'Wait Time' filed", "Oops", MessageBoxButtons::OK, MessageBoxIcon::Warning);
} else {
if(!Decimal::TryParse(textBox3->Text, value)) {
MessageBox::Show("Non-numeric characters detected in 'Max Upload' filed", "Oops", MessageBoxButtons::OK, MessageBoxIcon::Warning);
} else {
FILE *OutFile = fopen("run.bat","w");
fprintf(OutFile,"@ECHO OFF\r\nC:\\Python26\\python.exe factory.py");
if(factoryname->Text != ""){
fprintf(OutFile," -f ");
fprintf(OutFile,factoryname->Text);
}
fclose(OutFile);
}
}
}
有什么想法吗?这是一个简单的windows窗体应用程序。我使用Visual Studio C++ 2010
谢谢
Colu这只是一个转换错误:
cannot convert parameter 2 from 'System::String ^' to 'const char *'
可能的解决方案发布在此处:
这只是一个转换错误:
cannot convert parameter 2 from 'System::String ^' to 'const char *'
可能的解决方案发布在此处:
如果
factoryname->Text
标识属性,则其getter可能会引发CLR异常,在这种情况下,您将泄漏文件句柄OutFile
。考虑不要使用<代码> fOpen< /COD>等。它是一个C库函数,还有更好的选择,如<代码> STD::OFFROW
或者,由于.NET可用,您可以使用StreamWriter
,这将允许您通过System::String
,从而避免转换问题:
StreamWriter writer(someFilePath);
writer.WriteLine(someString);
退出作用域时,C++/CLI将负责关闭
编写器。如果factoryname->Text
标识属性,则其getter可能会引发CLR异常,在这种情况下,您将泄漏文件句柄OutFile
。考虑不要使用<代码> fOpen< /COD>等。它是一个C库函数,还有更好的选择,如<代码> STD::OFFROW
或者,由于.NET可用,您可以使用StreamWriter
,这将允许您通过System::String
,从而避免转换问题:
StreamWriter writer(someFilePath);
writer.WriteLine(someString);
C++ > CLI将在关闭该范围时注意关闭<代码>编写器>代码> < /P>。您使用的语言称为C++ + CLI,与标准C++是非常不同的。将来在谷歌搜索类似问题的答案时,使用正确的名称可能会有所帮助。我已经重新标记了你的问题。你使用的语言叫做C++ + CLI——与标准C++非常不同。将来在谷歌搜索类似问题的答案时,使用正确的名称可能会有所帮助。我已相应地为您的问题重新添加了标签。我使用了ptrToStringChars(),但现在出现以下转换错误:错误C2664:“fprintf”:无法使用[Type=const wchar\u t]将参数2从“cli::interior\u ptr”转换为“const char*”无法将托管类型转换为非托管类型尝试使用ptrToStringChars(),但现在出现此转换错误:错误C2664:“fprintf”:无法使用[type=const wchar\u t]将参数2从'cli::interior_ptr'转换为'const char*'无法将托管类型转换为非托管类型