草庐IT

c++ - std::stoi 的基本参数

c++的stoi函数定义为:intstoi(conststd::string&str,std::size_t*pos=0,intbase=10);如您所见,base参数默认为10,因此默认情况下它只能处理十进制数。通过将base设置为0,它可以通过前缀处理数字。这与strtol的行为相同,那么为什么默认值设置为10,而不是0? 最佳答案 我写了增加这些功能的提案。各种stoX转换函数的目标是提供简单转换。Base10是迄今为止最常见的用法,应该是最简单的,因此是默认值。以0为基数会导致许多初学者产生疑问,即为什么转换字符串"010"

c++ - std::stoi 的问题,不适用于 MinGW GCC 4.7.2

#include#includeintmain(){std::stringtest="45";intmyint=stoi(test);std::cout我在运行MinGWGCC4.7.2的计算机上尝试了这段代码。它给了我这个错误:我做错了什么,我是从cppreference得到的.它的代码完全相同。它与描述的错误不同here. 最佳答案 看来您的MinGW需要一个补丁:EnablingstringconversionfunctionsinMinGWThispatchenablesthefollowinglistofC++11func

当 base 不在 [2,36] (GCC) 中时,C++11 std::stoi 静默失败

我在Linux上使用GCC4.9.0。这是我的测试程序:#include#includeusingnamespacestd;intmain(intargc,char*argv[]){size_tpos=42;cout这是一个预期的结果:$./a.out1002result:4consumed:3也就是说,它将以2为底的“100”解析为数字4,并消耗了所有3个字符。我们可以在36以内进行类似操作:$./a.out10036result:1296consumed:3但是更大的基地呢?$./a.out10037result:0consumed:18446744073707449552这是什么

c++ - libstdc++ 没有实现 std::stoi 吗?

我想使用std::stoi.虽然我可以使用::atoi(str.c_str())如果这可行,它将使代码更清洁。但Eclipse告诉我:Function'stoi'couldnotberesolved我查过了标题包括在内,包含路径设置正确,因为我可以使用std::string,编译器标志-std=c++0x-std=c++11也设置了。是stoi()在gcc中丢失,还是我的错?我正在使用gcc(Debian4.7.2-4)4.7.2。 最佳答案 您使用的是GCC4.7.2,因此支持std::stoi。您可以忽略Eclipse警告。它应

C++stoi、stol、stoll 函数用法

stoi()函数#includeintstoi(conststd::string&str,std::size_t*pos=0,intbase=10);intstoi(conststd::wstring&str,std::size_t*pos=0,intbase=10);功能:将字符串str转成int整数参数:str:字符串pos:存储将字符串str转成int整数,处理了str中字符的个数的地址,默认为NULLbase:进制,10:十进制,8:八进制,16:十六进制,0:则自动检测数值进制,str是0开头为八进制,str是0x或0X开头是十六进制,默认为十进制stoi()函数指定转换字符串为十进

c++ - boost::lexical_cast 对于 c++11 stoi、stof 和 family 是否是多余的?

既然C++11引入了stoi,stof,boost::lexical_cast是多余的吗?和家人,还是有任何理由仍然使用它?(除了没有C++11编译器)它们提供完全相同的功能吗? 最佳答案 boost::lexical_cast句柄morekindsofconversion,包括迭代器对、数组、C字符串等。提供相同的通用接口(interface)(sto*对不同的类型有不同的名称)是区域敏感的(sto*/to_string只是部分,例如lexical_cast可以处理数千个分隔符,而stoul通常不会)

c++ - std::stoi 在 MinGW 上的 g++ 4.6.1 中不存在

我尝试编译这个简单的程序onIdeOne(使用gcc4.5.1)和我的Linux计算机(使用类似4.6.4的东西):#include#includeintmain(){std::cout它完美编译并输出32。但是,当我尝试在我的Windows计算机上使用MinGW和gcc4.6.1编译它时,我收到了这个错误:test.cpp:Infunction'intmain()':test.cpp:5:19:error:'stoi'isnotamemberof'std'std::stoul等也会发生同样的情况。std::stoi和家族是否由于某种原因在MinGW中不存在?我认为MinGW(sh|w

c++ - std::stoi 实际上可以安全使用吗?

我与某人就std::stoi的失败进行了愉快的交谈。说白了就是在内部使用std::strtol,如果报错就抛出。但是,据他们说,std::strtol不应该为"abcxyz"的输入报告错误,从而导致stoi不抛出std::invalid_argument.首先,这里有两个程序在GCC上测试了这些案例的行为:strtolstoi它们都在"123"上显示成功,在"abc"上显示失败。我查看了标准以获取更多信息:§21.5Throws:invalid_argumentifstrtol,strtoul,strtoll,orstrtoullreportsthatnoconversioncould