如何取反字符串

时间:2013-11-28 21:34:35

标签: c++ c string

我有字符串

 string s1="5 2 13 * +" //as prefix expression.

我希望像这样获得上述矩阵的反转。

"+ * 13 2 5"

我已尝试使用stringstream但它会"+ * 31 2 5"而我丢失了"13"并获得了"31"。这不好我的计算。

我该怎么办?感谢你们。

2 个答案:

答案 0 :(得分:4)

假设您想要反转的是str,并且值之间的分隔符是空格字符:

stringstream ss(str);
string answer, current;
answer.clear();
while (ss >> current) answer = current + " " + answer;
answer.erase(answer.size()-1, 1);     // eliminate space in the end of answer

答案 1 :(得分:1)

另一种方式

    std::string s = "5 2 13 * +";
    std::forward_list<std::string> lst;
    std::istringstream is( s );

    for ( std::string t; std::getline( is, t, ' ' ); ) lst.push_front( t );
    s.clear();

    for ( std::string t : lst ) s += t + ' ';

    std::cout << "s = " << s << std::endl;

或没有std :: getline

    std::string s = "5 2 13 * +";
    std::forward_list<std::string> lst;
    std::istringstream is( s );

    while ( is >> s ) lst.push_front( s );

    s.clear();
    for ( std::string t : lst ) s += t + ' ';

    std::cout << "s = " << s << std::endl;