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

时间:2016-08-14 18:30:11

标签: c++ macos clion removing-whitespace

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

  1. Remove spaces from std::string in C++
  2. remove whitespace in std::string
  3. 出于某种原因,我永远无法使解决方案正常工作。在我的程序中,我收集用户的输入并将其传递给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;
    }
    

    因此,当我运行此程序并键入&#34; 3 + 2&#34;时,输出为&#34; 3&#34;。

    这是我的控制台:

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

    我无法弄清楚如何解决这个问题。我甚至尝试使用一个使用正则表达式删除所有\s字符的解决方案,这给了我同样的问题。

1 个答案:

答案 0 :(得分:2)

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