有人知道为什么在开关中使用stoi函数会返回恒定的错误吗



我试图在开关中使用stoi函数,但它一直给我回这个错误"[Error]调用非constexpr函数"int std::stoi(const string&,std::size_t*,int(";我尝试过很多东西,我甚至尝试过转换";PUE";先输入const int,然后把变量放在那里,但它仍然会给我返回相同类型的错误,说它不是一个常量表达式。也许还有另一种写开关的方法?

基本上,我使用条形码扫描仪来获取字符串,我想使用子字符串a与一些预定义的数据进行比较,并将其显示在屏幕上。

谢谢。

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
main()
{
string A, B1, B2, C;
string scan;
cout << "Esperando a scan...";

cin >> scan;
cout << "Codigo:" << scan;

A = scan.substr (0,3); 
B1 = scan.substr (4,3); 
B2 = scan.substr (5,7); 
C = scan.substr (13,4); 

//comparing
switch(stoi(A))
case stoi("PUE",nullptr,0):
A << "PUERTA";
case stoi("PAN"):
A << "PANEL";
case stoi("LAC"):
A << "LACADO";

cout << "n Producto:" << A << "n Acabado:" << B1 << "n Color:" << B2 << "n Nº Pedido:" << C;
}

更改:

switch(stoi(A))
case stoi("PUE",nullptr,0):
A << "PUERTA";
case stoi("PAN"):
A << "PANEL";
case stoi("LAC"):
A << "LACADO";

至:

switch((A))
case "PUE":
A << "PUERTA";
case "PAN":
A << "PANEL";
case "LAC":
A << "LACADO";

我不知道你为什么要把字符串转换成int,你提供的代码中根本不需要它。。。。

添加其他人提供的建议:

switch语句执行的检查是CCD_ 1。这意味着表达式在编译时必须是已知的。因此,在使用switchcase时不能像使用stoi((函数那样添加任何动态表达式。

相关内容

  • 没有找到相关文章

最新更新