C ++字符串push_back函数不起作用
Posted
技术标签:
【中文标题】C ++字符串push_back函数不起作用【英文标题】:C++ string push_back function not working 【发布时间】:2021-02-14 03:02:08 【问题描述】:我正在尝试使用整数队列生成带有 0, 1, 2 的字符串来存储数字,直到我准备好检查它们是否是二进制数字。我从单个数字开始,然后附加它们以获得越来越长的数字字符串。所以我想要得到的顺序是 0, 1, 2, 00, 01, 02, 10, 11, 12, 20, 21, 22, 000, 001, 002, 010, 011, 012 等等。我遇到的问题是,当我从队列中取出一个整数时,将其转换为字符串并尝试使用 s.push_back(app) 将其附加到 0, 1, 2,没有附加任何内容。下面是我的代码和输出。
int main()
string s; //holds strings of numbers that come from the int queue
bool isBin; //holds the boolean value returned from recognizer
int count=0; //while loop counter to not go over 20 iterations
Queue myQ; //queue created to hold all values generated
int numHolder; //holds values dequeued from int queue to be turned into string
myQ.enQueue(0);//queue 3 initial values to work with
myQ.enQueue(1);
myQ.enQueue(2);
while(count<=20)//while loop doesnt go over 20 iterations of binary numbers
numHolder=myQ.deQueue();//holds int values dequeued from queue
s=to_string(numHolder);//converts the int from queue to a string
/* isBin=recognizer(s);//send the string to the recognizer
if(isBin==true)
cout<<s<<endl;//prints string if it is binary number
count++;//increment counter because string was binary
*/
for(int i=0; i<3; i++)//this loop adds 0 then 1 then 2 to the end of each dequeued string
char app = i;
s.push_back(app);//this is where string is appended with 0 1 or 2
cout<<s<<endl;
int newNum=stoi(s);//new appended string is turned into integer
myQ.enQueue(newNum);//new integer is put into queue
s.pop_back();//pops back the string so other numbers can be created with the original dequeued string
count++;
// // end of while
// end of main
输出:
0 0 0 1 1 1 2 2 2 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
我可以从输出中看出它的第一个字符的顺序是正确的,但是没有附加任何内容,因为字符串 push_back 函数不起作用。请帮忙!
【问题讨论】:
s=to_strung(numHolder);
覆盖s
的内容
【参考方案1】:
char app=i
存储二进制值为0
1
和2
的字符,而不是字符'0'
、'1'
和'2'
。
试试char app = '0'+i;
在 C/C++ 中,char
既是数字类型,也是存储单个字符的传统方式。 int
的转换只是将 char
视为数字类型。
【讨论】:
以上是关于C ++字符串push_back函数不起作用的主要内容,如果未能解决你的问题,请参考以下文章
除非涉及 endl,否则返回字符串的 C++ 函数不起作用...?