У меня есть программа на C++/CLI. Мне нужно записать текст и переменную в файл.
Мой код:
String^ MyVariable;
MyVariable = folderBrowserDialog1->SelectedPath // C://User/Users
std::ofstream out;
out.open("hello.txt");
if (out.is_open())
{
out << "Variable: " << MyVariable << std::endl; // ERROR
}
out.close();
Как исправить ошибку?
Какая ошибка? Пожалуйста, добавьте фрагмент кода, который мы можем (попытаться) скомпилировать и увидеть ту же ошибку, что и вы. Где находятся включения, int main
, объявление MyVariable
?... Также добавьте все сообщение об ошибке.
Дубликат: stackoverflow.com/q/8565889/1387438 (уже использовал свой голос за «Детали отладки»).
Вы не можете использовать C++ std::ofstream
с C++/cli System::String
. Но вы можете преобразовать его в std::string
(который совместим с std::ofstream
), используя информацию по ссылке выше.
Хорошо, но я могу написать файл txt или cfg на C++/cli?
Вы можете использовать API файлового ввода-вывода C++/cli (т. е. .NET) с System::String
, но не собственные API C++.
C++/CLI — это другой язык, чем C++.
На самом деле он принадлежит к семейству языков .NET и предназначен для соединения .NET с собственным кодом C++.
Вы не можете использовать std::ofstream
(который является собственным классом C++) напрямую с System::String
(который является классом C++/CLI, т.е. .NET).
У вас есть 2 варианта:
Преобразуйте System::String
(.NET) в std::string
(собственный C++). Это продемонстрировано здесь. После преобразования вы можете записать его в файл, используя std::ofstream
, как вы пытались.
Используйте API .NET для записи файла, например, с помощью FileStream
и StreamWriter
, как показано ниже:
System::String^ MyVariable = gcnew System::String("abc");
System::IO::FileStream^ fs = System::IO::File::Create("hello.txt");
System::IO::StreamWriter^ sw = gcnew System::IO::StreamWriter(fs);
sw->WriteLine("Variable: " + MyVariable);
sw->Close();
Содержимое файла будет:
Variable: abc
Что такое
MyVariable
? Что такое сообщение об ошибке? Приведите, пожалуйста, минимальный воспроизводимый пример.