gpt4 book ai didi

c++ - 函数没有返回所需的字符串

转载 作者:行者123 更新时间:2023-11-30 03:50:52 26 4
gpt4 key购买 nike

我正在尝试创建一个函数来过滤掉句子中的所有标点符号和空格,并仅返回新字符串中的字母和数字。

例如。如果我输入:嗨,我叫 Zach1234。 我希望它只返回:himynameiszach1234

然而它总是只返回第一个字母。关于如何解决此问题的任何想法?

#include <iostream>
#include <cctype>
using namespace std;

string filter(string str)
{
string result = "";
for(int i = 0; i < (str.size()-1); i++)
{
if(isspace(str[i]))continue;
if(ispunct(str[i]))continue;
if(isdigit(str[i]))result += str[i];
if(isalpha(str[i]))result += str[i];
}
return(result);
}


int main()
{
string happy;

cout <<"Please enter a string\n";
cin >> happy;

cout << filter(happy) << endl;

return(0);
}

最佳答案

问题是 cin >> happy;没有阅读您的所有输入。 >>运算符将在它读取的第一个空白字符处停止并将其留在流中。相反,您需要使用 std::getline() .

std::getline(std::cin, happy)

这会将流中的内容存储到 happy 中直到到达换行符或文件末尾。如果它确实以换行符读取,则它不会添加到字符串中,而是被丢弃。混合时确实需要小心>>和`getline() 虽然:Need help with getline()

user5141375 所述您的 for 循环也不正确。 size()返回字符串中的字符数,因此您需要循环到 i < str.size()而不是 i < str.size() - 1

关于c++ - 函数没有返回所需的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31551680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com