c ++如何提取单词之间的空格(如果有的话)

Posted

技术标签:

【中文标题】c ++如何提取单词之间的空格(如果有的话)【英文标题】:c++ How to extract the whitespace between words if there is one 【发布时间】:2014-11-01 07:32:15 【问题描述】:

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

我正在使用适用于符号的 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";


   

【问题讨论】:

为你的家庭作业写代码开始破解(我注意到你很久没有成为会员,不明白我们不是免费写代码) 我不希望任何人免费编写我的代码 :) 我想告诉我为什么 isalpha 没有检测到第二个或第三个单词中的符号,只是第一个。我确实是一个新成员,对编程和自学atm也很陌生。我通过解决我在网上找到的问题来练习,但我被困在这个自动取款机上:) 不过谢谢。 PS。我只写了我想要的输出来解释我希望它在删除空格时告诉我。不要让你写它:) 为什么不把你的代码放在这里 - 它没有按预期工作的原因可能有很多原因 我现在正在尝试这样做..试图弄清楚如何:P 向我们展示你的尝试(并确保它可以编译) 【参考方案1】:

&gt;&gt; 读取单个单词,在找到空白字符时停止。要阅读整行,您需要

std::getline(cout, message);

【讨论】:

【参考方案2】:

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

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

-贾耶什

【讨论】:

谢谢!其实我完全没有想到这一点。 我仍然想知道,为什么isalpha() 方法不起作用? for 循环是否在空格处终止? 似乎是的。我仍然无法弄清楚这一点,但我正在努力! isalpha 确实得到了符号等,但没有得到空格。它在第一个单词之后结束。

以上是关于c ++如何提取单词之间的空格(如果有的话)的主要内容,如果未能解决你的问题,请参考以下文章

c语言:输入一行字符,统计其中的单词个数,单词之间用空格分开

C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开

如何使用 sed/grep 提取两个单词之间的文本?

C语言输入一行字符 统计其中有多少个单词,单词之间用空格分隔开

C语言输入一行字符 统计其中有多少个单词,单词之间用空格分隔开

如何处理文本文件中两个单词之间没有被我的程序读取为空格的大间隙?