我正在制作一个控制台计算器,我想删除用户在使用该程序时可能输入的所有空格。这是代码:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string str;
std::cout<<"Enter sum): ";
cin>>str;
str.erase(std::remove_if(str.begin(), str.end(), (int(*)(int))isspace), str.end());
cout<<str;
system("pause");
return 0;
}
如果我输入 2 + 2 =,输出应该是 2+2= 但输出是:2 我在这里使用了错误的功能吗?
最佳答案
问题在于获取用户输入,而不是去除空格。
删除空格的代码是正确的,你可以做到see for yourself on IDEone .
问题是运算符 std::istream::operator >>
在遇到第一个空白字符时停止读取输入。您应该改用其他函数(例如 getLine
)。
关于c++ - 该代码应该返回不带空格的字符串,但它返回字符串直到第一个空格字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6718848/