如何忽略除第一个字符以外的所有字符?

时间:2018-01-26 15:16:11

标签: c++

#include <iostream>    
using namespace std;

int main ()
{
    char letter;
    while (cin>>letter)
    {
        switch (letter)
        {
            case 'a':
                cout<<"ant"<<endl;
                break;
            default :
                cout <<"enter only lower cases letters "<<endl;
        }
    }
    return 0;
}

c ++的任何功能是否忽略了第一个字符旁边的字符?因为,如果我输入aaa它会显示ant ant ant,所以我想摆脱这一部分。我希望你能得到我的问题。

4 个答案:

答案 0 :(得分:4)

读取一个字符串,然后打开第一个字符。像这样。

int main () {
    string word;
    while (cin >> word) {
        switch (word[0]) {
        case 'a':
            cout << "ant" << endl;
            break;
        default:
            cout << "enter only lower cases letters " << endl;
            break;
        }
    }
    return 0;
}

答案 1 :(得分:1)

您可以将用户输入视为std::string,然后只查看其中第一个字符作为switch语句。这将忽略用户在第一个字符后输入的任何内容。我无法想象这个用例,但我相信这就是你要求的。

#include <cstdlib>
#include <iostream>

int main( int argc, char *argv[] )
{
    std::string word;
    while (std::cin >> word)
    {
        char letter = word[0];
        switch (letter)
        {
            case 'a':
                std::cout << "ant" << std::endl;
                break;
            default:
                std::cout << "please enter only lower case letters" << std::endl;
                break;
        }
    }
    return EXIT_SUCCESS;
}

答案 2 :(得分:0)

反复阅读字符并跟踪已添加的内容

#include <set>

int main () {
    char letter;
    std::set<char> used;
    while (cin >> letter) {
        if (!used.insert(letter)[1])   // note returns a pair; 2nd item ([1]) is true if it didn't exist before
            continue;
        switch (letter) {
        case 'a':
            cout << "ant" << endl;
            break;
        default:
            cout << "enter only lower cases letters " << endl;
            break;
        }
    }
    return 0;
}

答案 3 :(得分:0)

只保存第一个字符

int main()
{
    char c = 0;
    c = getchar();
    putchar(c);
    return 0;
}
相关问题