FLTK - 在 if 语句中使用输入值 (const char*)

Posted

技术标签:

【中文标题】FLTK - 在 if 语句中使用输入值 (const char*)【英文标题】:FLTK - Using Input values in an if statement (const char*) 【发布时间】:2016-01-19 03:42:26 【问题描述】:

相当新的编程,目前正在使用 FLTK 做一个项目,我想要一个 Fl_Int_Input,并使用它来创建一个 if 语句,该语句取决于人输入的内容,类似于:

if(input->value()=='1')do this;

if(input->value()=='2')do this;

elsedo this;

但是,当我使用“value”时,网上看起来似乎是在 if 语句中使用 char 值的方式,出现错误:ISO C++ forbids comparison between pointer and integer

我认为这是因为该值是 const char* 而不是 char。代码在我使用时运行

if(input->value()=="1")do this;

但即使我输入 1 也没有任何反应

我应该如何使用这个输入来创建一个 if 语句?

就像我说的那样,我对这一切都很陌生,所以我不知道您可能需要哪些其他相关信息来提供帮助,我会尽力提供您可能需要的任何信息,这些是我的包括:

#include <iostream>
#include <sstream>
#include <string>

#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Check_Button.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Output.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Int_Input.H>
#include <FL/Fl_Timer.H>

在这里输入代码,我注意到的一件事是“1”变成了红色,这在我的代码中没有出现,也许这与此有关?

【问题讨论】:

从这里开始:The Definitive C++ Book Guide and List。 【参考方案1】:

您需要了解 C 中的字符串是如何工作的。 if(input-&gt;value()=="1") 对您不起作用的原因是因为 char* 值上的 == 运算符进行指针比较,而不是字符串比较。

FL_Input::value() 返回指向为您的字符串分配的内存的指针,但这与字符串文字 "1" 的内存位置不同,后者存储在程序内存段的某个位置。

要进行 C 风格的字符串比较,您可以这样做:

if( 0 == strcmp( input->value(), "1" ) )

当您包含&lt;cstring&gt; 时,strcmp 函数可用。

另一种方法(但不是很好)是将该值复制到一个临时的std::string 对象中并使用其重载的operator==( const char *)

if( std::string( input->value() ) == "1" )

要使用std::string,请包含&lt;string&gt;

更多阅读:

strcmp std::string

【讨论】:

感谢您的快速回复!我仍然在思考指针,所以这真的很有帮助:)【参考方案2】:

另一种方法是将值保存在变量中,然后在 if 语句中使用该变量。

std::string input_value;
input_data = input -> value();
if (input_data =="1") //should be in a callback or some function 
 do this ...
else if (input_data == "0")
 do this ...
else
 do this ...

希望我能理解并回答您的问题

【讨论】:

以上是关于FLTK - 在 if 语句中使用输入值 (const char*)的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个 if 语句不返回布尔值?

如何在while循环中使用if,else语句从变量中读取一系列值进行计算

在PHP中使用SQL语句 怎么取出查询出来的最后一个数据?

在 Laravel 中如何使用 if 语句停止计算?

学习总结 条件语句的应用

PHP implode 爆炸逗号分隔值用于 if else 语句