试图找到名称的中间名首字母

时间:2013-07-02 01:17:31

标签: c++ char

#include<iostream>

using namespace std;

int main(){
    char sampleName[30];
    char middle;
    int i;

    cin>>sampleName;

    for(i=0;i<30;i++){
        if(sampleName[i]=='.'){
            middle=sampleName[i-1];
            break;
        }          
    }

    cout<<middle;

    return 0;
    }

当输入中有空格时,它似乎不起作用。请。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

我不完全确定您的预期输入是什么,但您可能希望调查std::getline(与std::string一起使用)以避免std::cin >> ...出现空白问题。 (参见here进行相关讨论。)

所以,形式

#include <iostream>
#include <string>

int main()
{
    std::string sampleName;
    char middle;

    std::getline(std::cin, sampleName);

    for (int i = 0; i < sampleName.size(); i++)
    {
        if (sampleName[i] == '.')
        {
            middle = sampleName[i-1];
            break;
        }          
    }

    std::cout << middle << std::endl;

    return 0;
}

可能效果最好。 (单击here进行测试。)

答案 1 :(得分:0)

你有getline函数来加入一行空格。您输出错误,因为您的程序没有正确输入空格。