gpt4 book ai didi

c++ - 在 C++ 和 Cygwin 中使用字符串

转载 作者:搜寻专家 更新时间:2023-10-31 01:42:38 25 4
gpt4 key购买 nike

我是新手,所以我需要一点帮助。我想允许输入尽可能多的字符和空格来填充输入, 例如,我输入了 cin>>name 和 cin>>birthday如果此人键入他们的名字和姓氏,那么它将跳过下一个 cin 函数。我该如何避免这种情况,我希望能够将名称声明为某种字符串或字符,而不必经历整个名称=第一个+最后一个考验并让他们输入第一个和最后一个..如果有人明白我在说什么我只需要头文件和适当的声明..我是新手,但我肯定不明白我可能会得到的复杂答案

最佳答案

使用 std::getline 在一行中获取输入。

std::string name;
std::getline(std::cin, name);

或者,如果您希望生日在同一行,则执行此操作。

std::string input;
std::getline(std::cin, input);
std::istringstream input_stream(input);
std::string first_name, last_name, birthday;
if (!(input_stream >> first_name)) std::cout << "Input cannot be empty.\n";
if (!(input_stream >> last_name)) std::cout << "You must have a last name.\n";
if (!(input_stream >> birthday)) std::cout << "You forgot your birthday.\n";

如果生日中包含空格,那么您可以对流中剩余的单词使用 std::getline。

std::getline(input_stream, birthday);

最后你的程序变成了:

#include <iostream>
#include <sstream>

int main()
{
std::string input;
std::getline(std::cin, input);
std::istringstream input_stream(input);
std::string first_name, last_name, birthday;
if (!(input_stream >> first_name)) std::cout << "Input cannot be empty.\n";
if (!(input_stream >> last_name)) std::cout << "You must have a last name.\n";
input_stream.ignore(); // Discard space that doesn't get extracted out
std::getline(input_stream, birthday);
std::cout << first_name << "\n";
std::cout << last_name << "\n";
std::cout << birthday;
}

为了丢弃流中剩余的空间,请使用 input_stream.ignore();

如果要处理其中包含空格的名称,请应用相同的原则。这次您必须提供要忽略的参数以告诉它丢弃空格。

int main()
{
std::string input;
std::getline(std::cin, input);
std::istringstream input_stream(input);
std::string first_name, last_name, birthday;
std::getline(input_stream, first_name, ',');
input_stream.ignore(1, ' '); // Discard space
std::getline(input_stream, last_name, ',');
input_stream.ignore(1, ' '); // Discard space
std::getline(input_stream, birthday, ',');
std::cout << first_name << "\n";
std::cout << last_name << "\n";
std::cout << birthday;
}

运行示例:

First Name, Last Name, This is a birthday
First Name
Last Name
This is a birthday

关于c++ - 在 C++ 和 Cygwin 中使用字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26556595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com