C++程序将字符串类型变量转换为布尔值


在C++中,布尔变量包含二进制数据true或false,字符串变量是一系列字母、数字和特殊字符的序列。编译器本身不支持字符串到布尔值的转换,但有几种方法可以执行此转换。我们将探讨各种方法,通过这些方法可以将字符串值转换为布尔值。

如果我们考虑算法,它非常简单。我们获取一个字符串值,并使用各种方法将其转换为布尔值。

算法(通用)

  • 在字符串变量中获取输入。
  • 将字符串值(true或false)转换为布尔值。
  • 输出该值。

使用boolalpha和istringstream

Boolalpha是一个流I/O操纵器,可用于操纵布尔值和字母数字值。Istringstream是一个字符串流,用于在字符流上实现不同的函数。由于boolalpha与流一起使用,因此它可以与istringstream一起使用以将字符串值转换为布尔值。

语法

string ip = <string literal>;
bool op;
istringstream(ip) >> std::boolalpha >> op;

算法

  • 在字符串变量中获取输入。
  • 将值放入istringstream对象中,并使用boolalpha将该值赋给布尔变量。
  • 输出该值。

示例

#include <iostream> #include<sstream> using namespace std; bool solve(string ip) { bool op; istringstream(ip) >> std::boolalpha >> op; return op; } int main() { string ip = "true"; bool op = solve(ip); cout << "The value of ip is: " << ip <<endl; cout << "The value of op is: " << op <<endl; return 0; }

输出

The value of ip is: true
The value of op is: 1

在此示例中,我们获取了一个字符串值作为输入。然后,我们使用istringstream对象来包含字符串值,然后使用boolalpha修饰符将其转换为布尔变量。我们打印输入和输出值以进行比较。

使用字符串比较

在下一个示例中,我们进行了基本的字符串比较以将字符串值转换为布尔值。如果字符串值等于“false”,则返回0;否则,返回1。需要注意的是,这将为除“false”以外的所有字符串返回true。但是这种方法是最容易实现的。

语法

string ip = <string literal>;
bool op = ip != “false”;

算法

  • 在字符串变量ip中获取输入。
  • 获取一个布尔变量op。
  • 如果ip与“false”相同,则
    • op = false
  • 否则,
    • op = true
  • 显示op的值。

示例

#include <iostream> using namespace std; bool solve(string s) { return s != "false"; } using namespace std; int main() { string ip = "true"; bool op = solve(ip); cout<< "The input value is: " << ip << endl; cout<< "The output value is: " << op << endl; return 0; }

输出

The input value is: true
The output value is: 1

使用std::stoi

在前面的示例中,我们只将“true”转换为布尔值1,将“false”转换为布尔值“0”。现在,在某些情况下,字符串值可能是0或1。对于这种情况,我们可以使用stoi函数将字符串值转换为整数,然后转换为布尔值。stoi函数将字符串值转换为整数,并使用显式类型转换,我们可以将该值转换为布尔值。

语法

string ip = <string literal>;
bool op = (bool)stoi(ip);

算法

  • 在字符串变量ip中获取输入。
  • 获取一个布尔变量op。
  • 将值显式类型转换为stoi(ip)的结果的bool。
  • 显示op的值。

示例

#include <iostream> #include <string> using namespace std; bool solve(string s) { //using std:: stoi function return (bool)stoi(s); } using namespace std; int main() { string ip = "1"; bool op = solve(ip); cout<< "The input value is: " << ip << endl; cout<< "The output value is: " << op << endl; return 0; }

输出

The input value is: 1
The output value is: 1

结论

我们获取了作为输入的字符串,这些字符串可能包含“true”、“1”、“false”或“0”中的任何值。前两种方法分别将“true”或“false”转换为1和0。如果我们将“true”或“false”替换为“1”或“0”,它将以相同的方式工作。但在第三个示例中,如果我们将“1”或“0”更改为“true”或“false”,它将不起作用,因为stoi函数无法将不包含字母数字字符的字符串转换为整数值,因此无法转换为布尔值。因此,根据使用情况,我们必须确定要使用的最佳方法。

当在特定项目中使用某些第三方库或API时,需要进行字符串到布尔值的转换。一些API或库以字符串格式输出,为了使结果兼容,我们必须将字符串值转换为布尔值。

更新于: 2022年10月19日

6K+ 浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.