抱歉,noob问题无法确定在这里使用哪些功能。 http://www.cplusplus.com/reference/string/string/
会转换成c-string并编写一大堆代码,但我敢打赌这是一个很好的方法。
只是尝试将A,B和C附加到字符串的末尾并将其添加到队列中,在string :: assign()之后继续获得在??()函数中终止的分段错误(根据调试器) )
string a, b, c;
a = s.append("A");
b = s.append("B");
c = s.append("C");
q.add(a);
q.add(b);
q.add(c);
这也以分段错误结束。
q.add(s + "A");
q.add(s + "B");
q.add(s + "C");
这也是问题,它使用旧的,所以我会得到:
teststringA
teststringAB
teststringABC
而非预期
teststringA
teststringB
teststringC
答案 0 :(得分:0)
程序运行时,它可以访问内存的某些部分。首先,您在每个函数中都有局部变量;这些都存储在堆栈中。其次,你可能有一些内存,在运行时分配(使用malloc,用C或新的,在C ++中),存储在堆上(你也可以听到它叫做“免费商店”)。您的程序只允许触摸属于它的内存 - 前面提到的内存。该区域外的任何访问都将导致分段错误。分段错误通常称为段错误。
你的第二个问题是
q.add(s + "A"); // appends A to s hence teststringA
q.add(s + "B"); // teststringA + B hence teststringAB
q.add(s + "C"); //teststringAB + C hence teststringABC
请参阅http://www.cplusplus.com/reference/string/string/append/
上的文件Append to string
The current string content is extended by adding an additional appending string at its end.
The arguments passed to the function determine this appending string:
string& append ( const string& str );
Appends a copy of str.
示例
// appending to string
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string str;
string str2="Writing ";
string str3="print 10 and then 5 more";
// used in the same order as described above:
str.append(str2); // "Writing "
str.append(str3,6,3); // "10 "
str.append("dots are cool",5); // "dots "
str.append("here: "); // "here: "
str.append(10,'.'); // ".........."
str.append(str3.begin()+8,str3.end()); // " and then 5 more"
str.append<int>(5,0x2E); // "....."
cout << str << endl;
return 0;
}
输出:
Writing 10 dots here: .......... and then 5 more.....