关于字符串的Visual C ++ 2010中的流问题

时间:2011-12-19 18:44:46

标签: c++-cli

我正在尝试在Visual C ++ 2010中创建Windows窗体应用程序。我在字符串变量“stat”中保存了一些特定的字符串,如:

System::String ^stat = "sample string";

问题是,我无法使用ofstream将其写入文本文件。当我尝试这个时:

if ( opstat == true ) // opstat is a bool variable
{
    ofstream outf("mytxt.txt",ios::app);
    outf << stat;
    outf.close();
}

编译器返回错误:

error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'System::String ^' (or there is no acceptable conversion)

这是一个永远存在的巨大错误:

1>          D:\Development\Visual Studio 2010\VC\include\ostream(447): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long double)'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]

我应该在这做什么?

P.S。我已经包含了所有必要的标题(或者我认为必要的标题),如string,fstream,istream,iomanip等。

2 个答案:

答案 0 :(得分:2)

std::ofstream是一个C ++标准库函数,它不是为支持System::String^而构建的。如果要从System::String^写入文件,则应使用System::IO::FileStream类。否则,请使用std::string代替System::String^

答案 1 :(得分:2)

我认为您必须将System::String ^stat转换为std::string。请参阅以下链接如何转换:

C++/CLI Converting from System::String^ to std::string