-2

我有两个问题。我需要编写一个程序来提取所有非字母字符并显示它们,然后将它们删除。

我正在使用适用于符号的 isalpha,但前提是输入字符串没有像“hello world”这样的空格

但如果是多个单词,如“hello!world!”,它只会提取第一个感叹号,而不会提取第二个感叹号。

第二个可能相关的问题,我希望我的程序检测单词之间的空格(我尝试了 isspace 但我一定用错了?然后删除它们并将它们放入 char 变量中

例如,如果输入是 hello4 world! 你今天好吗?我想让它告诉我

删除:4 删除:删除:!已删除:已删除:3 已删除:已删除:已删除:

长话短说,如果没有其他方法,我想将空格检测为!isalpha,或者为文本之间的空格找到类似于 isalpha 的内容。

谢谢

# include <iostream>
# include <string>

using namespace std;

void main()
{
    string message;


    cin >> message;

    for (int i = 0; message[i]; i++)

    if(!isalpha(message[i]))


        cout << "deleted following character: " << message[i] <<endl;
        else
        cout <<"All is good! \n";


   }
4

2 回答 2

0

有一种更好的方法可以获取非字母字符,

您可以检查每个字符的 asci 值并与字母 asci 字符进行比较,如果不在其中且不是空格(空格 asci val),那么您将获得非字母字符。您可以在这里获取所有 ascii 代码:=> http://www.asciitable.com/

-杰耶什

于 2014-11-01T07:51:53.163 回答
0

>>读取单个单词,在找到空白字符时停止。要阅读整行,你想要

std::getline(cout, message);
于 2014-11-01T12:34:32.137 回答