gpt4 book ai didi

c++ - while( cin >> value ) 在我输入一个字符时打破循环

转载 作者:行者123 更新时间:2023-11-28 04:20:27 24 4
gpt4 key购买 nike

过去,我一直在用c# 编程,但现在我正在学习c++。为什么当我输入一个字符串时 while 循环在 c++ 中退出,而在 c# 中如果我不使用 tryparse 它将给出一个异常。 c++ 是否在后端显式执行类似 tryparse 的操作?对不起,如果我的问题我使用代码块作为我的 C++ IDE。

我正在阅读 c++ primes 这本书,并编写了一个简单的程序,该程序连续将整数作为输入,直到输入一个字符串。我在 C# 中编写了相同的代码,但它导致我出错。所以我必须在 C# 中使用 tryparse 方法。

int value = 0;

在 C++ 中

while( cin >> value );

在 C# 中

while( value  == int.parse(Console.ReadLine());

最佳答案

Why the while loop exit in c++ when I enter a string

operator>> 在内部执行错误处理。如果提取整数失败,则流进入失败状态,并且循环正在检查流的状态,因此在流失败时退出。

in c# if I don't use tryparse it will give an exception.

是的,因为这就是方式int.parse()被定义为工作。

您可以通过 enabling exceptions in the stream 在 C++ 中获得类似的行为.这样,如果发生提取失败,一个 std::ios_base::failure抛出异常。

Does the c++ explicitly do something like tryparse in the backend ?

在某种程度上,是的。

I am reading the book c++ primes and code a simple program that continuously takes integer as input until a string is entered. I wrote the same code in c# but it leads me to an error.

您的 C++ 和 C# 代码不等同。

您的 C# 代码按原样读取整行,丢弃换行符,然后尝试将整行按原样转换为 int。

您的 C++ 代码会丢弃前导空格 - 包括换行符 - 直到它遇到一个非空白字符,然后它会尝试读取一个 int 值,并且它后面的任何内容 - 包括换行符 - 都会保留在流中以供后续读取.

So I have to use tryparse method in C#.

如果您不希望失败的转换引发异常,那么可以。

关于c++ - while( cin >> value ) 在我输入一个字符时打破循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55562601/

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