gpt4 book ai didi

c++ - 输入错误 : split part of one entery

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

我正在做一些关于标准 I/O 的练习我有一个复杂的类。我的类(class)有重载的插入和提取运算符,输入应为以下形式:x + yi(例如 10 + 9i)我必须确定输入是否有效。有问题,如果我以这种形式输入,结果总是失败,因为我正在将字符“i”输入到整数数据类型。那么我如何做到这一点,而不会出现故障位?我的功能是这样的:

istream &operator>>(istream &input, Complex &complex)
{
input >> complex.realPart;
input.ignore(3);
input >> complex.imaginaryPart;

return input;
}

但这显然是不够的!如果 i 和整数之间有一个空格,它可以解决所有问题。但是没有!我想过使用数组,甚至字符串,但随后将它们复制到我类(class)的 int 私有(private)数据中,这似乎不是一个好的编程。毕竟我必须寻找什么错误?多谢 ! ;)

最佳答案

您可以使用 std::getlinestd::sscanf解析出值

#include <cstdio>
#include <iostream>
#include <string>

int main()
{
std::string input;
std::getline(std::cin, input);

int real;
int imaginary;
std::sscanf(input.c_str(), "%i + %ii", &real, &imaginary);
std::cout << real << " " << imaginary;
}

输入

5 + 3i

输出 - Live Demo

5 3

return value of std::sscanf according to cppreference

Number of receiving arguments successfully assigned, or EOF if read failure occurs before the first receiving argument was assigned.

所以你可以检查返回值 == 2 以确保它是一个有效的输入

关于c++ - 输入错误 : split part of one entery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30821594/

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