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】:>>
读取单个单词,在找到空白字符时停止。要阅读整行,您需要
std::getline(cout, message);
【讨论】:
【参考方案2】:有一种更好的方法可以获取非字母字符,
您可以检查每个字符的 asci 值,并与字母 asci 字符进行比较,如果不在其中且不是空格(space asci val), 然后你得到你的非字母字符。 你可以在这里获取所有的 ascii 代码:=> http://www.asciitable.com/
-贾耶什
【讨论】:
谢谢!其实我完全没有想到这一点。 我仍然想知道,为什么isalpha()
方法不起作用? for 循环是否在空格处终止?
似乎是的。我仍然无法弄清楚这一点,但我正在努力! isalpha 确实得到了符号等,但没有得到空格。它在第一个单词之后结束。以上是关于c ++如何提取单词之间的空格(如果有的话)的主要内容,如果未能解决你的问题,请参考以下文章
c语言:输入一行字符,统计其中的单词个数,单词之间用空格分开
C语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开
C语言输入一行字符 统计其中有多少个单词,单词之间用空格分隔开