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

时间:2017-03-05 06:55:26

标签: c++

我将一个整数附加到函数内部名为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;
}

我仍然会感到毛骨悚然。救命啊!

1 个答案:

答案 0 :(得分:1)

output += id + "\t"; // this is an int   

相当于

output += (id + "\t");

相当于:

char const* s1 = "\t";
char const* s2 = s1 + id;
output += s2;

除非id10,否则会导致访问您不应该访问的内存,从而导致未定义的行为。

我猜您要将id"\t"的字符串表示附加到output。你可以使用:

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