C++ 正在尝试查找名称的中间首字母 #包括 使用名称空间std; int main(){ char sampleName[30]; 炭中部; int i; cin>>sampleName; 对于(i=0;i

C++ 正在尝试查找名称的中间首字母 #包括 使用名称空间std; int main(){ char sampleName[30]; 炭中部; int i; cin>>sampleName; 对于(i=0;i,c++,char,C++,Char,我不能完全确定您预期的输入是什么,但您可能希望查看std::getline(与std::string)以避免std::cin>.出现空白问题(有关讨论,请参阅) 所以,某种形式 #include<iostream> using namespace std; int main(){ char sampleName[30]; char middle; int i; cin>>sampleName; for(i=0;i<30

我不能完全确定您预期的输入是什么,但您可能希望查看
std::getline
(与
std::string
)以避免
std::cin>.
出现空白问题(有关讨论,请参阅)

所以,某种形式

#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;
    }
#包括
#包括
int main()
{
std::字符串sampleName;
炭中部;
std::getline(std::cin,sampleName);
对于(int i=0;istd::cout你有一个函数来获得一行空格。你得到了错误的输出,因为你的程序没有正确地使用空格进行输入。

你能粘贴你尝试过的样本输入和输出吗?输入“JohnS.Smith”有效。(输出的)输入“JohnS.Smith”无效。(输出的“”)看这个问题:它停在space@pilotcam...啊哈…我明白了…谢谢!在链接问题中没有太多讨论,但问题的原因是
操作符>>
跳过前导空格并读取字符,直到它到达空格。谢谢Obvlious船长!我不得不这么说。
#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;
}