如何在 C++ 中跳过空格
Posted
技术标签:
【中文标题】如何在 C++ 中跳过空格【英文标题】:How to skip spacing in C++ 【发布时间】:2018-07-18 01:27:26 【问题描述】:我尝试读取 txt 文件,然后将其转换为二进制文件,然后保存到数组中。 谁能帮我这个? 下面的编码只是我编码的一部分。对于下面的编码,当我输入 AB 时,答案是正确的。如果我输入 A B,答案是 1010 并结束。不能处理到B,有间距就停止。
#include <iostream>
#include<conio.h>
using namespace std;
int main()
long int i=0;
char hexdec[100];
cout<<"Enter any hexadecimal number : ";
cin>>hexdec;
cout<<"\nEquivalent Binary value is : ";
while (hexdec[i])
if (hexdec[i]!=NULL)
cout<<hexdec[i]<<endl;
switch(hexdec[i])
case '0' : cout<<"0000";
break;
case '1' : cout<<"0001";
break;
case '2' : cout<<"0010";
break;
case '3' : cout<<"0011";
break;
case '4' : cout<<"0100";
break;
case '5' : cout<<"0101";
break;
case '6' : cout<<"0110";
break;
case '7' : cout<<"0111";
break;
case '8' : cout<<"1000";
break;
case '9' : cout<<"1001";
break;
case 'A' : cout<<"1010";
break;
case 'B' : cout<<"1011";
break;
case 'C' : cout<<"1100";
break;
case 'D' : cout<<"1101";
break;
case 'E' : cout<<"1110";
break;
case 'F' : cout<<"1111";
break;
default : cout<<"\nInvalid hexadecimal digit "<<hexdec[i];
i++;
cout<<endl;
else
cout<<hexdec[i]<<"pass"<<endl;
i++;
getch();
【问题讨论】:
打开你的 C++ 书籍到解释如何使用std::getline()
的章节,然后阅读。一旦您使用std::getline()
读取整行输入,您的工作和责任就是编写代码来解析已读取的所有内容,包括任何空格,并忽略空格。计算机总是完全按照您的要求执行,而不是您希望它执行的操作。如果您希望您的计算机忽略它刚刚读取的输入行中的空格,您必须编写完全执行此操作的代码。
【参考方案1】:
根据 cplusplus.com,从 std::cin 中提取始终将空格视为正在提取的值的终止。
Basic Input/Output
我建议包括 <string>
标头并使用 getline
并处理输入的整行字符。
例如。
std::string chars;
std::getline(std::cin,chars);
// Process chars.c_str()
【讨论】:
【参考方案2】:正如 jschroedl 已经说过的,std:cin
将空格视为终止值,它在空格之前提取值。并使用getline
要回答您的主要问题(跳过间距),您可以使用语法
std::replace( [string].begin(), [string].end(), '[char1]', '[char2]');
其中 [string] 是您要替换的字符串(在您的情况下为hexdec
)
char1 = ' ' (space)
char2 = '' (empty)
因为 hexdec 是一个字符数组。您可以将其设为数据类型字符串,因为它与索引操作基本相同,因为它可用于字符串标题。
【讨论】:
以上是关于如何在 C++ 中跳过空格的主要内容,如果未能解决你的问题,请参考以下文章