gpt4 book ai didi

c++ - C++ 中带有尾随字符的数字输入

转载 作者:太空狗 更新时间:2023-10-29 20:21:52 27 4
gpt4 key购买 nike

我需要从 std::cin 获取用户输入到一个 double 类型的变量中。这是在复数的上下文中,因此它经常碰巧输入一个数字作为 5i5.4565i

考虑 main() 函数中的以下代码:

while (true) {
double c;
std::cin >> c;
std::cout << c << "\n\n";
}

这是发生了什么:

In: 0.45
Out: 0.45
// OK

In: 5 0.45
Out: 5

0.45
// OK

In: 0.45i
Expected out: 0.45
Acutal out: 0

0

0...

我猜这是因为它没有将 0.45i 识别为 double。那么我如何正确地从 0.45i 中获取值 0.45,忽略尾随的 i

最佳答案

先读一个字符串,再转成double,

$ cat ans.cpp 
#include <cstdlib>
#include <iostream>

int main()
{
std::string str;
double dbl;
while (std::cin >> str) {
dbl = std::strtod(str.data(), NULL);
std::cout << dbl << std::endl;
}
}

首先,您将每个以空格分隔的字符串读入strstrtod 函数将尝试获取尽可能多的字符以形成 float ,包括十六进制 float 。它返回从字符串的这一部分解析的 double 值。第二个参数可以是一个char * 指针,它指向最后一次解析的字符。如果您不想简单地丢弃尾随字符,这将很有用。如果为空,则忽略。

关于c++ - C++ 中带有尾随字符的数字输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41018113/

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