问题描述
我需要帮助。所以,我必须编码( C++ )并执行一个 deque 序列容器。对于输出,在每个整数之间,需要包含“&”。输出应如下所示:
20 & 18 & 16 & 14 & 12 & 10 & 8 & 6 & 4 & 2 & 0
我的问题是我得到了我想要的输出,在每个整数之间都有“&”,但因此在输出的末尾还有一个“&”。例如:
20 & 18 & 16 & 14 & 12 & 10 & 8 & 6 & 4 & 2 & 0 &
我只想去掉输出末尾的最后一个“&”。我真的可以使用一些帮助来解决这个问题。任何提示将不胜感激。
以下是该项目的完整代码:
#include <iostream>
#include <deque>
using namespace std;
void display(deque <int> k)
{
deque <int> :: iterator it;
for (it = k.begin(); it != k.end(); ++it)
cout << *it << " & ";
cout << "\n";
cout << "\n";
}
int main()
{
deque <int> dq;
int i;
for(i=0;i<=20;i+=2)
{
dq.push_front(i);
}
cout<<"\nDeque aftet 1st operation: ";
display(dq);
for(i=101;i<=113;i+=4)
dq.push_front(i);
for(i=103;i<=115;i+=4)
dq.push_back(i);
cout<<"Deque aftet 2nd operation: ";
display(dq);
for(i=0;i<dq.size();i++)
{
if(i%2==0)
{
dq[i]=777;
}
}
cout<<"Deque aftet 3rd operation: ";
display(dq);
//delete from dqueue
deque<int>::iterator it1,it2,it3,it4;
it1 = dq.begin();
it2 = dq.end();
//first three value
it3= it1+3;
//last three value
it4=dq.end();
it4--;
it4--;
it4--;
dq.erase(it1,it3);
dq.erase(it4,it2);
cout<<"Deque aftet 4th operation: ";
display(dq);
return 0;
}
解决方法
更新!我找到了解决方案。我用了\b。所以,结果是这样的:
void display(deque <int> k)
{
deque <int> :: iterator it;
for (it = k.begin(); it != k.end(); ++it) {
cout << *it << " & ";
}
cout << "\b\b \n";
}
\b 是反斜杠代码(或字符转义序列)。 \b 是一个退格字符,它将光标向后移动一个字符,这样当您键入下一内容时,光标前面的字符将被覆盖。
意思是如果你打印它,光标会打印并返回1个字符。
例如
cout<<"hello\bHi";
将打印“HellHi”,因为在打印 Hello 后,编译器发现了一个 \b 转义序列。所以它返回了 1 个字符(在 Hello 的 'o' 处)并开始从 Hello 的 o 打印 Hi。所以你得到了 HellHi 而不是 HelloHi。
我希望这可以帮助那些像我在他们的代码和项目中那样偶然发现这个问题的人。如果我错了或误解了字符转义序列的使用,请纠正我。我感谢对这篇文章的所有回复。祝你有美好的一天!
,试试这个:
void display(deque <int> k)
{
deque <int> :: iterator it = k.begin();
if ( it != k.end() ) {
count << *it ++;
}
for ( ; it != k.end(); ++it) {
cout << " & " << "\n\n" << *it;
}
}