C++ 如何从一个输入中获得两个整数值?

C++ 如何从一个输入中获得两个整数值?,c++,C++,我才十年级,有一个练习,我必须得到一个输入,比如input=1/2,这个输入需要存储在两个不同的整数中,我不知道怎么做 感谢您的帮助 抱歉,如果这个问题听起来很愚蠢,但这是我在这里的第一篇帖子,我不知道礼仪 提前谢谢 解决方案: 将输入作为std::string,然后解析它 完整代码: 包括 std::对输入编号 { std::字符串输入; std::cout>输入; size_t slashPos=输入。查找“/”; 如果slashPos==input.npos | | slashPos==0

我才十年级,有一个练习,我必须得到一个输入,比如input=1/2,这个输入需要存储在两个不同的整数中,我不知道怎么做

感谢您的帮助

抱歉,如果这个问题听起来很愚蠢,但这是我在这里的第一篇帖子,我不知道礼仪

提前谢谢

解决方案:

将输入作为std::string,然后解析它

完整代码:

包括 std::对输入编号 { std::字符串输入; std::cout>输入; size_t slashPos=输入。查找“/”; 如果slashPos==input.npos | | slashPos==0 | | slashPos==input.size-1 { 标准::cout解决方案:

将输入作为std::string,然后解析它

完整代码:

包括 std::对输入编号 { std::字符串输入; std::cout>输入; size_t slashPos=输入。查找“/”; 如果slashPos==input.npos | | slashPos==0 | | slashPos==input.size-1 {
std::cout读取两个整数并忽略/匹配它们之间的字符。匹配字符的最好方法是操纵器:

std::istream& slash(std::istream& in) {
    if ((in >> std::ws).peek() == '/') {
        in.ignore();
    }
    else {
        in.setstate(std::ios_base::failbit);
    }
    return *this;
}

int main() {
    int numerator, denominator;
    if (std::cin >> numerator >> slash >> denominator) {
        std::cout << " read " << numerator << '/' << denominator << '\n';
    }
}

读取两个整数并忽略/匹配它们之间的字符。匹配字符的最好方法是操纵器:

std::istream& slash(std::istream& in) {
    if ((in >> std::ws).peek() == '/') {
        in.ignore();
    }
    else {
        in.setstate(std::ios_base::failbit);
    }
    return *this;
}

int main() {
    int numerator, denominator;
    if (std::cin >> numerator >> slash >> denominator) {
        std::cout << " read " << numerator << '/' << denominator << '\n';
    }
}

只需使用现有的iostream功能。这并不复杂。不需要进行字符串解析。插入器运算符将跳过whit空格。此外,它将把给定值转换为整数变量。斜杠将被读取、检查,然后丢弃

#include <iostream>

int main() {
    int number1{}, number2{};
    char slash{};

    std::cout << "\nEnter a string: ";

    if (std::cin >> number1 >> slash >> number2 && slash == '/') {
        std::cout << "\n\nNumber 1: " << number1 << "\nNumber 2: " << number2 << "\n\n";
    }
    else {
        std::cerr << "\nError: invalid input\n\n";
    }
    return 0;
}

只需使用现有的iostream功能。这并不复杂。不需要进行字符串解析。插入器运算符将跳过whit空格。此外,它将把给定值转换为整数变量。斜杠将被读取、检查,然后丢弃

#include <iostream>

int main() {
    int number1{}, number2{};
    char slash{};

    std::cout << "\nEnter a string: ";

    if (std::cin >> number1 >> slash >> number2 && slash == '/') {
        std::cout << "\n\nNumber 1: " << number1 << "\nNumber 2: " << number2 << "\n\n";
    }
    else {
        std::cerr << "\nError: invalid input\n\n";
    }
    return 0;
}

类似于std::string s;std::cin>>s;检查它是否与使用std::regex所期望的匹配,然后随意解析。嗨,丹尼尔,欢迎这么做。到目前为止你做了哪些尝试,哪里出了问题?你知道如何使用getline和string streams吗?字符串的格式是否总是保证为X/Y,其中X和Y都是个位数的整数gers?你关心解析它吗/或者你只是想把它扔掉并存储INT吗?请更具体地说明你被困在哪里。你在a中取得了多大的进步?使一个HelloWorld运行b将其更改为读取某个内容,并将其输出为c将其更改为读取某个内容,如1/2 d更改为期望值,如1/2并获得t1和2分别存储在不同的变量中。请展示你已经实现的代码,解释你的具体问题是什么。一般来说,请阅读。因为这似乎是关于家庭作业,请也研究这里描述的折衷方案。本教程是关于这里的总体思路,如何提问基本上是关于提问的礼节。至少在你创建帐户时,我们向你推荐了这次旅行,不是吗?否则,欢迎来到StackOverflow,并允许我表达我对在十年级时勇敢面对这个社区和像我这样的人的敬意。没有任何愤世嫉俗的意图对不起,但我没有尝试任何错误的方法。请e按照我概述的步骤进行操作。只有这样,你才能提出这里需要的那种明确而具体的问题。比如std::string s;std::cin>>s;检查它是否与你期望的相符。使用std::regex,然后随意解析。嘿,丹尼尔,欢迎来到这里。到目前为止你尝试了什么,哪里出了问题?你知道如何使用get吗行和字符串流?字符串的格式是否总是保证为X/Y,其中X和Y都是一位数的整数?您是否关心解析它/或者您只是想将其丢弃并存储整数?请更具体地说明您被卡住的位置。a使HelloWorld运行b将其更改为读取一些内容,您取得了多大进展g输出为c,将其更改为1/2,d更改为1/2,并将1和2分开存储在不同的变量中。请显示您已经实现的代码,并解释您的具体问题。一般情况下,请使用关于家庭作业,请也研究一下这里描述的折衷方案本次旅行是关于这里的总体想法,如何提问基本上是关于提问的礼仪。至少在您创建帐户时,本次旅行是向您推荐的,不是吗?否则,欢迎来到StackOverflow,并允许我表达我对勇敢面对这个社区和像我这样的人只有十年级。没有玩世不恭的意思。对不起,但我没有尝试过任何错误的方法。请按照我概述的步骤进行操作。这样你才能提出这里所期望的那种明确而具体的问题。对于这样一个简单的任务来说,有点复杂…绝对不是-IO正在进行

随着项目的发展,这些事情变得越来越复杂。这并不是被任何想象所过度设计的。@ArminMontigny:是的,如果有一个标准的库操纵器来检查/跳过给定的字符就好了。一旦你假设操纵器斜线被给定,我想这还不错。这是scanf IOStreams中没有涵盖的内容之一:scanf%d/%d\n、&分子和分母我仍然不建议使用scanf。对于这样一个简单的任务,有点复杂。绝对不是-IO是随着项目的发展而变得越来越复杂的事情之一。这并不是被任何想象所过度设计的。@ArminMontigny:是的,如果有一个标准的库操纵器来检查/跳过给定的字符就好了。一旦你假设操纵器斜线被给定,我想这还不错。这是scanf IOStreams中没有涉及的内容之一:scanf%d/%d\n、&分子和分母我仍然不建议使用scanf。我知道在许多方面这是一个风格问题,一些软件公司坚持认为这是一个问题,但在这种情况下,您不需要初始化自动变量。所有变量都必须始终初始化。对我来说,这是不可能讨论的。任何专业软件开发人员都应该这样做。如果你驾驶一辆装有线控软件的汽车,你会接受无初始变量吗?真的没有人会,也没有人能通过评估。。。。虽然这说明我明年要买一辆德国车,所以也许这会让我安心。就我个人而言,我喜欢保持变量未初始化,并且对读取未初始化变量的任何路径启用运行时检查。在我的金融数学领域,你知道毛茸茸的程序员的堡垒,它让你确信你的代码在运行。我知道在很多方面这是一个风格问题,一些软件公司坚持这样做,但你不需要在这种情况下初始化自动变量。所有变量都必须始终初始化。对我来说,这是不可能讨论的。任何专业软件开发人员都应该这样做。如果你驾驶一辆装有线控软件的汽车,你会接受无初始变量吗?真的没有人会,也没有人能通过评估。。。。虽然这说明我明年要买一辆德国车,所以也许这会让我安心。就我个人而言,我喜欢保持变量未初始化,并且对读取未初始化变量的任何路径启用运行时检查。在我的金融数学领域里,你知道毛茸茸的程序员的堡垒,他们让你确信你的代码运行正常。@Bathsheba:你最喜欢的代码不会编译。它抛出testcase 5/和a/b。这太复杂了purpose@ArminMontigny哎呀,在这种情况下,你可以考虑下投票的答案。从输入读取std::字符串是我最喜欢的。老实说,我并没有真正检查其余的部分。我做了一个微不足道的编辑并回滚,这样我就可以收回我的投票。愚蠢的堆栈溢出是因为你不能改变你的思维规则。@Bathsheba:你最喜欢的没有编译。它抛出testcase 5/和a/b。这太复杂了purpose@ArminMontigny哎呀,在这种情况下,你可以考虑下投票的答案。从输入读取std::字符串是我最喜欢的。老实说,我并没有真正检查其余的部分。我做了一个微不足道的编辑并回滚,这样我就可以收回我的投票。愚蠢的堆栈溢出与它的你不能改变你的思想规则。