我将一个整数附加到函数内部名为output的String引用中。我在另一个函数中创建了一个名为output的String,并通过引用该函数的参数传递了它。然而,当我尝试打印它时,我得到一堆奇怪的符号 。我尝试使用sstream进行输出,但它不起作用:
Student.cc
void Student::makeString(string& output){
output += fname + "\t"; // this is a string
output += lname + "\t"; // this is a string
output += id + "\t"; // this is an int
}
IO.cc
void IO::printInfo(Student& student){
string output = "";
student.makeString(output);
// doesnt work
cout << output << endl;
// doesn't work
stringstream ss;
ss << output;
cout << ss.str() << endl;
}
我仍然会感到毛骨悚然。救命啊!
答案 0 :(得分:1)
output += id + "\t"; // this is an int
相当于
output += (id + "\t");
相当于:
char const* s1 = "\t";
char const* s2 = s1 + id;
output += s2;
除非id
为1
或0
,否则会导致访问您不应该访问的内存,从而导致未定义的行为。
我猜您要将id
加"\t"
的字符串表示附加到output
。你可以使用:
output += std::to_string(id);
output += "\t";