(C++) Не получается передать переменную string ( в MainFomr.h) в функцию которая находится в классе (Module.cpp/Module.h)
При запуске программы пишет
*E0415 не существует подходящего конструктора для преобразования из "System::String ^" в "std::basic_string<char, std::char_traits, std::allocator>" Your Hotel".
Я пытаюсь создать переменную string и дать ей данные из textbox и потом поставить в функцию, но выдает ошибку.
Вот сам код:
MyForm.cpp
//...
string NamePerStr = System::Convert::ToString(NamePer->Text);
SaveToFile(vipboxCheck, NamePerStr);
//...
Module.cpp
int SaveToFile(bool vip, string NamePerStr)
{
//...
ofstream fout;
fout.open("../Data.txt", ofstream::app);
if (!fout.is_open())
{
// error
}
else
{
fout << "==============================";
switch (vip)
{
case 1:
fout << "| VIP |==============================" << endl;
break;
case 0:
fout << "=====================================" << endl;
break;
default:
break;
}
cout << NamePerStr << endl;
//...
fout.close();
return 0;
}
Module.h
int SaveToFile(bool vip, string NamePerStr);
Я пытался делать так
String^ NamePerStr = System::Convert::ToString(NamePer->Text);
Тоже не получается - дает ту же ошибку, пробовал через вектор из стрингов сделать - тоже не получается (мне лучше всего из вектора заполнить так как много данных)
Ответы (1 шт):
Спустя пару ночей пыток с и разными способами я разобрался.
Нужно подключить using namespace System::IO; в пространство имен в файле MyForm.h.
Потом подключить библиотеку в класс или туда же в MyForm.
И в функции где вы хотите записать данные в файл нужно написать
StreamWriter^ file = gcnew StreamWriter(path, ofstream::app);
где path это путь к файлу где он будет создан напр. "../../Skin.ini". а ofstream::app это класс от fstream который позволяет дописывать значение не стирая все (это можно убрать уставив только путь).
Дальше просто прописывать имя файла и WriteLine где писать текст или переменные. А потом его надо закрыть.
file->WriteLine("Text" + "," + smth);
file->Close();