MessageBox:输出多个字符串
MessageBox: Output multiple strings
这是一个用c++编写的Windows窗体程序。
其中的objective,就是得到一个词,由用户写在文本框中,叫做tbInputSrc,用于在文件中搜索代码。
我在此程序中打开的文件包含以下内容:
1111 aaaa aaaa 1
2222 bbbb bbbb 3
3333 cccc cccc 5
4444 dddd dddd 7
5555 eeee eeee 7
数字是代码(codice),第一个"word"是名字(nome),第二个"word"是姓氏(cognome),数字是标记(vote ) 的学生。
因此,objective 是通过在文本框中编写的代码在文本框中显示学生的姓名和姓氏。
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 正文中显示多个字符串?
问题是 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。
这是一个用c++编写的Windows窗体程序。 其中的objective,就是得到一个词,由用户写在文本框中,叫做tbInputSrc,用于在文件中搜索代码。 我在此程序中打开的文件包含以下内容:
1111 aaaa aaaa 1
2222 bbbb bbbb 3
3333 cccc cccc 5
4444 dddd dddd 7
5555 eeee eeee 7
数字是代码(codice),第一个"word"是名字(nome),第二个"word"是姓氏(cognome),数字是标记(vote ) 的学生。 因此,objective 是通过在文本框中编写的代码在文本框中显示学生的姓名和姓氏。
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 正文中显示多个字符串?
问题是 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。