MessageBox: вывод нескольких строк - PullRequest
0 голосов
/ 18 апреля 2020

Это программа Windows Form, написанная на c ++. Целью этого является получение слова, написанного пользователем в TextBox, под названием tbInputSr c, которое используется для поиска кода в файле. Файл, который я открыл в этой программе, содержит следующее:

1111 aaaa aaaa 1
2222 bbbb bbbb 3
3333 cccc cccc 5
4444 dddd dddd 7
5555 eeee eeee 7

Числа - это код (код), первое слово - это имя (номер), второе слово - фамилия ( cognome), а число - это оценка (голос) студента. Таким образом, цель состоит в том, чтобы показать в текстовом поле имя и фамилию студента через код, написанный в текстовом поле.

ifstream input("output.txt");
string cognome, nome;
string text;
int codice, voto;
int tr;

tr = 0;

while (!tr && input >> codice >> cognome >> nome >> voto) {
    if (this->tbInputSrc->Text == Convert::ToString(codice)) {
        tr = 1;
    }
}

if (!tr) {
    MessageBox::Show("Alunno non trovato", "Risultato ricerca", MessageBoxButtons::OK, MessageBoxIcon::Error);
} else {
    MessageBox::Show(/*name and surname of the student*/, "Risultato ricerca", MessageBoxButtons::OK, MessageBoxIcon::Information);
}

input.close();

Я пытался показать имя и фамилию по-разному: Использование простая сумма строки:

if (!tr) {
    MessageBox::Show("Alunno non trovato", "Risultato ricerca", MessageBoxButtons::OK, MessageBoxIcon::Error);
} else {
    string phrase = cognome + " " + none;
    MessageBox::Show(phrase, "Risultato ricerca", MessageBoxButtons::OK, MessageBoxIcon::Information);
}

Я пытался использовать c_str:

if (!tr) {
    MessageBox::Show("Alunno non trovato", "Risultato ricerca", MessageBoxButtons::OK, MessageBoxIcon::Error);
} else {
    string phrase = cognome + " " + none;
    MessageBox::Show(phrase.c_str(), "Risultato ricerca", MessageBoxButtons::OK, MessageBoxIcon::Information);
}

Все это, дай мне ошибку E0304 Итак, я хотел Спросите, есть ли простой или лучший способ показать несколько строк в теле MessageBox?

1 Ответ

1 голос
/ 19 апреля 2020

Проблема в том, что MessageBox::Show - это C ++. NET, поэтому его первые аргументы имеют тип System::String^ (управляемый указатель на System::String), а не std::string (или const char *). Вам нужно как-то преобразовать вашу строку в этот тип. Попробуйте передать gcnew String(phrase.c_str()).

Подробнее см. https://docs.microsoft.com/en-us/dotnet/api/system.string?view=netframework-4.8.

...