C++ 接受来自C字符串的空白输入

C++ 接受来自C字符串的空白输入,c++,C++,如果对象为空,我收到一个错误: 姓mary terminate在抛出“std::out_of_range”实例后调用 整体问题: 编写一个程序,用以下格式读取一个人的名字:名字,然后是中间名或首字母,然后是姓氏。然后,程序以以下格式输出名称: 姓,名。中首字母 您的程序应该工作相同,并在中间首字母后放置一个句号,即使输入没有包含句号。您的程序应该允许没有中间名或首字母的用户使用。在这种情况下,课程的输出不包含中间名或首字母。例如,输入 #include <iostream> #inc

如果对象为空,我收到一个错误:

姓mary terminate在抛出“std::out_of_range”实例后调用

整体问题:

编写一个程序,用以下格式读取一个人的名字:名字,然后是中间名或首字母,然后是姓氏。然后,程序以以下格式输出名称: 姓,名。中首字母

您的程序应该工作相同,并在中间首字母后放置一个句号,即使输入没有包含句号。您的程序应该允许没有中间名或首字母的用户使用。在这种情况下,课程的输出不包含中间名或首字母。例如,输入

#include <iostream>
#include <cstring>

int main()
{
std::string FirstName;
std::string SecondName;
std::string LastName;

getline(std::cin,FirstName);
getline(std::cin,SecondName);
getline(std::cin,LastName);
std::cout<<LastName<<", "<<FirstName<< " "<<SecondName.at(0)<<"."<< std::endl;

}
#包括
#包括
int main()
{
std::stringfirstname;
std::string SecondName;
std::字符串LastName;
getline(std::cin,FirstName);
getline(std::cin,SecondName);
getline(std::cin,LastName);

std::cout当
.at(0)
的字符被提供时。您会得到什么错误?请发布一个。如果
LastName
为空,那么实际的姓氏将在
SecondName
中。只需执行
std::swap(SecondName,LastName)
。然后您需要为空的
SecondName
添加一个大小写。抱歉,编辑错误-姓氏,mary terminate在抛出“std::out_of_range”实例后被调用-如果您将中间名保留为黑色,并且不使用C字符串,
std::string
(在
标题中定义)是一个C++类。无论哪种方式,在尝试使用字符串中的任何元素之前,必须检查字符串是否为空。