如何在 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

我建议包括 &lt;string&gt; 标头并使用 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++ 中跳过空格的主要内容,如果未能解决你的问题,请参考以下文章

如何在函数调用中跳过可选参数?

如何在循环中跳过项目

如何在推送事件中跳过 GitHub Actions 作业?

如何根据某些条件在 MSSQL 游标中跳过一行(迭代)?

如何在 Moshi 中跳过 JSON 属性?

WPF - 如何在标签导航中跳过标签?