c++ - 该代码应该返回不带空格的字符串,但它返回字符串直到第一个空格字符

标签 c++ string

我正在制作一个控制台计算器,我想删除用户在使用该程序时可能输入的所有空格。这是代码:

#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/

相关文章:

c - 使用 fgets() 从文件复制到字符串的段错误

java - 在 Java 中更改字符串中的整数

java - 如何在单个分割中标记带或不带分隔符的字符串

c++ - 如何使用ZeroMQ监听和解析特定端口上的UDP数据?

c++ - 有没有办法让这段代码更快?

php - SplFixedArray 是在幕后用 C/C++ 实现的吗?

Java 我该如何解析这个?

c++ - 查找数组中的最小值(我的代码有什么问题?)

c++ - 为什么for_each通过move返回函数

c - 如何在C中将2个字符的字符串分成2个不同的字符串?