删除 C++ 字符串中的空格不起作用

Remove whitespace in C++ string doesn't work

我已经看过这两个问题了:

  1. Remove spaces from std::string in C++
  2. remove whitespace in std::string

出于某种原因,我永远无法使解决方案正常工作。在我的程序中,我收集用户的输入并将其传递给 std::string。从那里,我想删除其中的所有空格。例如,如果用户输入“3 + 2”,我希望将其更改为“3+2”。

发生的事情是,保留第一个字符串之前的内容。这是我的程序:

#include <iostream>

std::string GetUserInput() {
    std::cout << "Please enter what you would like to calculate: ";
    std::string UserInput;
    std::cin >> UserInput;
    return UserInput;
}
int PerformCalculation(std::string Input) {
    Input.erase(std::remove_if(Input.begin(), Input.end(), ::isspace), Input.end());
    std::cout << Input;
    return 0;
}
int main() {
    std::string CalculationToBePerformed = GetUserInput();
    int Solution = PerformCalculation(CalculationToBePerformed);
    return 0;
}

所以当我运行这个程序并输入“3 + 2”时,输出是“3”。

这是我的控制台:

Please enter what you would like to calculate: 3 + 2
3
Process finished with exit code 0

我不知道如何解决这个问题。我什至尝试使用涉及使用正则表达式删除所有 \s 字符的解决方案,这给了我同样的问题。

要阅读完整的行(直到终止 \n),您需要使用例如std::getline(std::cin, UserInput);。否则,您当前正在阅读第一个空白字符之前的文本。