我是C ++的新手,正试图解决初学者试图从句子中删除所有标点符号的问题。以下是我提出的代码。但是,当我输入“Hello!Hello!”时,编译器输出“Hello”而不是“Hello Hello”(这是我期望的)。
为什么会这样?
#include <iostream>
#include <string>
using namespace std;
int main(){
cout << "please enter a sentence which include one or more punctuation marks" << endl;
string userInput;
string result;
cin >> userInput;
decltype(userInput.size()) n;
for (n = 0; n < userInput.size(); n++){
if(!ispunct(userInput[n])){
result += userInput[n];
cout << result << endl;
}
}
return 0;
}
输入:
Hello! Hello!
编译器输出:
Hello
答案 0 :(得分:4)
执行cin >> userInput
时,它只会读取输入流中的第一个空格字符。
您可能希望使用std::getline
代替(默认情况下会读取整行)。
答案 1 :(得分:1)
尝试使用function pageLoad() {
$("#<%= tbTime.ClientID %>").datetimepicker({
format: 'LT'
});
}
功能。阅读它here。
欢迎使用C ++!阅读stringstreams他们非常擅长操纵字符串
答案 2 :(得分:1)
正如其他人已经说过的那样,您使用getline
来阅读整行文字。
我还想指出<algorithm>
中的某些功能可以使这种事情变得更加清晰。您可以使用std::remove_if
。
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
std::string line;
while( std::getline( std::cin, line ) )
{
line.erase( std::remove_if( line.begin(), line.end(), ispunct ), line.end() );
std::cout << line << std::endl;
}
return 0;
}