2017-10-08 76 views
0

我有一个定义的堆栈,它只接受字符串。 现在我的目标是读取每个字符,如果它是+运算符,我需要将它推送到堆栈。将字符保存到堆栈上的字符串类型?

当我推,这样可以节省+的ACSII calue这是43

我如何实现保存字符的字符串?

我试图用STL

stack<string> s1; 
    string post; 
    if (exp[0] == '+') 
    { 
     s1.push(to_string(exp[0])); 
    } 
    cout<<s1.top(); 

我需要+保存,最后我写代码infox转换为后缀表达。我的输入将与运营商编号

+1

为什么不能你s1.push(“+”);你已经知道这将是一个+,因为你正在检查它。 –

+0

我正在扫描使用for循环来检查运算符,然后将它推到字符串栈 – AmithRc

+0

就像我说的,为什么你不能做s1.push(“+”),在我看来你的栈可以堆栈 s1 –

回答

1

to_string function只有重载将数值转换为字符串,这就是为什么你得到字符串“43”。你可以只改变你的代码如下:

其中
s1.push("+"); 

串的from c-string构造函数用于隐式地从const char*转换为string。或者,从单一char转换为string,最简单的方法是使用fill constructor,在这种情况下,你会这样写:

s1.push(string(1, exp[0])); 
+0

真棒,它的工作。对于有兴趣探索更多的C++我很新。我只是看到了与to_string一起工作的方式。请你解释一下如何解决这类问题并探索更多的C++功能。 – AmithRc

+0

我想了解这一点,当我们调用这个函数,字符串(1,exp [0])时,它是字符串类的构造函数?在将它发送到堆栈推送功能之前,它是如何工作的? – AmithRc

+0

它是一个字符串类的构造函数,它带有值的字符串的大小。更多可以在这里阅读重载版本:http://www.cplusplus.com/reference/string/string/string/ –