我有字符串
string s1="5 2 13 * +" //as prefix expression.
我希望像这样获得上述矩阵的反转。
"+ * 13 2 5"
我已尝试使用stringstream但它会"+ * 31 2 5"
而我丢失了"13"
并获得了"31"
。这不好我的计算。
我该怎么办?感谢你们。
答案 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;