C++ 如何打印包含整数的字符串C++;

C++ 如何打印包含整数的字符串C++;,c++,C++,我在函数中向名为output的字符串引用追加一个整数。我在另一个函数中创建了一个名为output的字符串,并通过引用将其传递给该函数。然而,当我试图打印它时,我得到了一堆奇怪的符号��������������������. 我尝试使用sstream进行输出,但没有成功: Student.cc void Student::makeString(string& output){ output += fname + "\t"; // this is a string outpu

我在函数中向名为output的字符串引用追加一个整数。我在另一个函数中创建了一个名为output的字符串,并通过引用将其传递给该函数。然而,当我试图打印它时,我得到了一堆奇怪的符号��������������������. 我尝试使用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(学生和学生){
字符串输出=”;
生成字符串(输出);
//不起作用
库特
相当于

output += (id + "\t");
这相当于:

char const* s1 = "\t";
char const* s2 = s1 + id;
output += s2;
除非
id
1
0
,否则会导致访问不应该访问的内存,从而导致未定义的行为

我猜您想将
id
“\t”
的字符串表示形式附加到
输出中。您可以使用:

output += std::to_string(id);
output += "\t";

在合并之前,您需要将数字转换为字符串。
output+=std::to_string(id)+“\t”
output+=id+“\t”
不会做您认为它会做的事情。
id+“\t”
看起来像是整数和(衰减到)指针的相加,因此会导致(未定义的行为,可能表现为)一种指向随机内存的指针,在字符串文本存储在内存中的位置之后出现一定数量的字符。您可能不想尝试将从该内存位置开始的字符串附加到
输出
。除了@Hurkyl的优秀建议外,还可以使用
makeString
函数返回字符串而不是字符串通过变量引用获取它。因此它变成:
std::string Student::makeString()const{std::ostringstream ost;ost
char const* s1 = "\t";
char const* s2 = s1 + id;
output += s2;
output += std::to_string(id);
output += "\t";