我已经读过这两个问题了:
出于某种原因,我永远无法使解决方案正常工作。在我的程序中,我收集用户的输入并将其传递给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
字符的解决方案,这给了我同样的问题。
答案 0 :(得分:2)
要阅读完整的一行(直到终止\ n),您需要使用例如std::getline(std::cin, UserInput);
。否则,您当前正在阅读文本到第一个空格字符。