C ++,如何只打印字符串的第一部分?

时间:2014-02-13 18:45:58

标签: c++

我想通过使用字符串变量向用户询问他们的姓和名,然后使用他们在该字符串中输入的第一个名称并将其打印出来。

string name;

cout << "What is your first and last name? ";
cin >> name;
cout << "Thank you " << name  << " for shopping with us!";

如果name变量在第二个cout语句中,我只想使用他们的名字,使用我当前的设置,它会输出他们的名字和姓氏。

4 个答案:

答案 0 :(得分:2)

您可以使用getline仅占用第一个空格,将第一个名称放在一个变量中,然后读取行的末尾以获取另一个变量中的姓氏。如果你需要两个连接,那么之后再这样做。例如:

string first, last, name;

getline(cin, first, ' ');
getline(cin, last);
cout << "Thank you " << first << " for shopping with us!";
name = first + ' ' + last; //Assuming you want a space in between

答案 1 :(得分:0)

您需要根据空格分割字符串 - 请查看此质量检查:Split a string in C++?

答案 2 :(得分:0)

有很多方法可以做到,其中一些比其他方法更容易。对于可能的重复帖子检查:Split a string in C++?(很多人可能会对此进行反思)。

您也可以更改它,以便说明:

string fname;
string lname;

cout << "What is your first name? ";
cin >> fname;
cout << "What is your last name? ";
cin >> lname;
cout << "Thank you " << fname  << " for shopping with us!";

此解决方案最简单,但如果您按照上述链接获得更多收益。

答案 3 :(得分:0)

如果您想要一个输入并将其拆分为输出,您可以执行以下操作:

std::string line, fname, lname;
std::getline(std::cin, line);
std::istringstream iss(line);
iss >> fname >> lname;
std::cout << "Thank you, " << fname << ", for shopping with us!" << std::endl;