如何从字符数组字符串中提取空格
How to extract spaces from char array string?
程序的功能是在提取标点符号时验证字符串是否为回文。代码提取了双引号和单引号,但我似乎不知道如何提取空格。当从调试器中观察带有空格的数组值时,字符串似乎在插入空格的地方被截断了。我从键盘输入ra da r,字符串的数组值是调试器监视列表中的ra。
#include "stdafx.h"
#include <iostream>
bool palindrome(char[], int);
int main()
{
using namespace std;
bool status;
int siz,i;
char strarry[20];
siz = 0;
cout << " enter string" << endl;
cin >> strarry;
for (i = 0; strarry[i] != ' '; i++)
++siz;
status = palindrome(strarry, siz);
if (status)
cout << " the string is a palindrome" << endl;
else
cout << "not a palindrome" << endl;
cin.clear();
cin.ignore(255, '/n');
cin.get();
return 0;
}
bool palindrome(char arry[], int size)
{
int i, l;
char arryn, arrysize;
static bool search = false;
static bool match = false;
static bool found = false;
static int n = 0;
int end = size - 1;
if (search != true){
for (i = 0; i <= end; i++){
if ((arry[i] == ' ') || (arry[i] == ''') || (arry[i] == '"')){
if ((end - i) >= 1){
for (l = i; l <= end; l++)
arry[l] = arry[l + 1];
--end;
size = end;
}
else{
size= end - 1;
}
found = true;
}//end if
}// end for
if (found == false)
size = end;
search = true;
}//end if
if (((n - size) <= 1) && match )
return true;
else{
arryn = arry[n];
arrysize = arry[size];
if (arry[n] == arry[size]){
++n;
match = true;
return palindrome(arry, size - 1);
}
else{
match = false;
return false;
}//end else
}// end else
}
代码的问题在于您使用的是:
cin >> strarry;
cin将空白、制表符、新行等视为终止字符,因此一旦遇到其中一个字符,它将停止读取行的剩余部分。
解决方案是使用:
getline(cin, strarry);
这将分隔符限制为换行符。
点一;使用字符串。这是c++,丢弃c样式字符串
第二点;使用CCD_ 1。当您执行cin >> strarry
时,它将只读取第一个空白。使用getline(cin,str)
修复此问题
第三点;先修剪空白。如果您首先构造一个没有whitespce的新字符串,is-a-parindrome函数将以的方式编写起来更简单。您可以使用擦除-删除习惯用法和isspace
相关文章:
- 2D数组来自文本输入,中间有空格
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 如何从 std::atomic 中提取指针 T<T>?
- 为什么istream不支持右值提取
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- 如何设置一个范围来提取我想要获得的信息
- 如何在c++中使用system()来运行包含空格的python脚本
- basic_string的前导/尾部不区分空格的特征
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- std::regex:匹配由数字和空格组成的字符串,并提取数字.如何?
- 从没有空格的字符串中提取整数
- 当字符串中只有一个"GOOD"字符串可用时,从没有空格的字符串中提取第一个单词的最佳和有效方法?
- 如何从空格分隔的单个字符串中提取多个子字符串
- 为什么 std::operator>>(istream&, char&) 提取空格?
- 如何在重载提取运算符中读取行(忽略空格字符)
- 如何从字符数组字符串中提取空格
- c ++ 如何提取单词之间的空格(如果有)
- 如何从包含空格和换行符的文本文件中提取特定数据
- 需要一个正则表达式来从字符串中提取字母和空格