这段代码成功运行,结果为“找到字符”。
if FORMAT = DELIMITED then data must have Delimiter Field; ALL Columns should have a mandatory Starting Index.
if FORMAT = FIXEDWIDTH then data must have all Columns should have mandatory Starting and Ending Index.
但是以下代码给出了错误:
if ( req.body.format == 'DELIMITED' )
{
//then how to use my schema in my code??
}
错误是:
unordered_map<char,char> mp;
mp['a'] = 'b';
char b='b';
if(mp['a'] && mp['a'] == b)
cout<<"Character Found";
为什么这样,unordered_map<char,string> mp;
mp['a'] = "b";
string s="b";
if(mp['a']) && (mp['a'] == s))
cout<<"Character Found";
可以正常工作,但在c ++中,could not convert 'mp.std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::operator[]<char, std::__cxx11::basic_string<char>, std::hash<char>, std::equal_to<char>, std::allocator<std::pair<const char, std::__cxx11::basic_string<char> > > >('a')' from 'std::unordered_map<char, std::__cxx11::basic_string<char> >::mapped_type {aka std::__cxx11::basic_string<char>}' to 'bool'
if(mp['a']) && (mp['a'] == s)) cout<<"Character Found";
会失败
答案 0 :(得分:1)
条件mp['a']
不检查元素是否存在,而是获取该键的值。如果不存在任何值,则它将创建一个value-initialized值并将其插入到地图中,并返回该值。
这意味着mp['a']
将返回一个std::string
对象,并且您不能使用std::string
作为布尔表达式。
这两种情况下都使支票mp['a']
毫无用处。如果要查看地图中是否存在某个元素,则需要find
,这会增加一层复杂性(如果标准库支持即将推出的C ++ 20功能,则可以使用contains
)