删除 C++ 字符串中的空格不起作用
Remove whitespace in C++ string doesn't work
我已经看过这两个问题了:
- Remove spaces from std::string in C++
- 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);
。否则,您当前正在阅读第一个空白字符之前的文本。
我已经看过这两个问题了:
- Remove spaces from std::string in C++
- 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);
。否则,您当前正在阅读第一个空白字符之前的文本。