草庐IT

c++ - 为什么要在函数中使用 c_str()

这个问题在这里已经有了答案:Whydon'tthestd::fstreamclassestakeastd::string?(10个答案)关闭8年前。我正在阅读《C++Primer》一书及其使用的文件输入输出章节:ifstreaminfile(ifile.c_str());打开名称在字符串ifile中的文件。我尝试了代码,即使没有c_str()也能完美运行。那么使用它有什么意义呢?当我尝试从命令行参数打开文件时,我应该使用c_str()吗?我的意思是正确的用法:ifstreamfin(argv[1])或ifstreamfin(argv[1].c_str())

c++ - "if (getline(fin, str)) {}"是否符合C++11标准?

我检查了C++11标准,发现了以下事实:std::getline(fin,str)返回一个basic_ios对象,其类有一个成员函数explicitoperatorbool()const;basic_ios类没有成员函数operatorvoid*()const;作为C++11之前的版本。所以,我认为if(getline(fin,str)){}不符合标准。应该写成if(bool(getline(fin,str)){}。(但是,VC++2012对此用法给出警告。即强制void*为bool)我说的对吗? 最佳答案 代码是一致的。当对象自动

c++ - C/C++ : Packing or padding data in a struct

我正在使用带有GNUGCC编译器的Code::BlocksIDE。structtest{chara;chare;charf;charb;chard;};sizeof(test)返回5。我读了这个答案:Whyisn'tsizeofforastructequaltothesumofsizeofofeachmember?为什么最后一个char后没有填充,所以sizeof(test)返回6或8?添加short和int等后,我可以问更多的问题。但我认为这个问题现在很好。填充不会使处理器更容易处理结构吗? 最佳答案 char的对齐方式仅为1,因

c++ - 从函数返回 'c_str'

这是我在网上找到的一个小型图书馆:constchar*GetHandStateBrief(constPostFlopState*state){staticstd::ostringstreamout;//...restofthefunction...returnout.str().c_str()}在我的代码中我这样做:constchar*d=GetHandStateBrief(&post);std::cout现在,起初d包含垃圾。然后我意识到我从函数中获取的C字符串在函数返回时被销毁,因为std::ostringstream是在堆栈上分配的。所以我补充说:returnstrdup(out

c++ - 调用空字符串的 c_str

这个代码片段是正确的还是会导致未定义的行为?std::strings;assert(strlen(s.c_str())==0);如果不是undefinedbehavior,上面的断言会通过吗? 最佳答案 这是完美定义的,断言通过了。c_str()函数将始终返回有效的以零结尾的C字符串。通常会使用empty()来测试空字符串。 关于c++-调用空字符串的c_str,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

c++ - 尝试转换 str 字符串以用于 std::getline 定界符

我正在尝试获取std::string值并将其用作std::getline()函数中的分隔符但无论我做什么,编译器都会给我错误。这就是我想要做的:std::stringstreamss(s);std::stringitem;std::stringdelim="&&=";intssize=delim.size();intnewssize=ssize+1;chardel[SSIZE];//alsoherewhenitrygiveserrorstrcpy(del,delim.c_str());char*delrr[1024]=delim.c_str();//giveserrorwhile(st

c++ - 访问 'padded'字节是不是UB?

如果我有这样一个对象:struct{uint32_tn;uint8_tc;}blob{};然后会有3个“填充”字节。访问填充字节是不是UB?例如:uint8_t*data=reinterpret_cast(&blob);std::cout我首先假设这可能是UB,但如果这是真的,那么memcpy也将是UB:memcpy(buf,&blob,sizeof(blob));我的具体问题是:访问填充字节是否为UB?如果没有,那是否意味着值也已定义? 最佳答案 不,当整个对象已被零初始化(标准在§8.5/5中说当对象被零初始化时填充被初始化为0

c++ - 将 int vector 转换为 str vector

我正在尝试转换vector到vector.使用std::transform我用了std::to_string转换int至string但我不断收到错误消息。这是我的代码#include#include#include#includeintmain(){std::vectorv_int;std::vectorv_str;for(inti=0;i但是我收到了这个错误nomatchingfunctionforcallto'transform'std::transform(v_int.begin(),v_int.end(),v_str.begin(),std::to_string);^~~~~~

python - BeautifulSoup: AttributeError: 'str' 对象没有属性 'copy' 。在 Ubuntu 上工作,在 Windows 上失败

我在使用BeautifulSoup时遇到一个奇怪的错误。这是我正在运行的代码片段:whileTrue:listing_soup=soupify(urlget(page_url))foriinlisting_soup.findAll('div','searchResultContent'):#dosomestuff...这是抛出的异常:Traceback(mostrecentcalllast):File"C:\path\to\script.py",line716,inforiinlisting_soup.findAll('div','searchResultContent'):File"

Android ADB - 无法识别 LG G Pad (VK810)

标题说明了一切。我正在尝试在我的平板电脑上使用adb,但我似乎永远无法得到它。Ifollowedthistutorial,但我得到的是:我不明白。我尝试了本地LG驱动程序,按照上述教程进行操作,甚至只是使用设备vanilla。什么都不起作用,我不知道为什么。如果有人好奇,我会手动将我的供应商ID添加到adb_usb.ini。(LG的VID是1004)。 最佳答案 在使用它2天后,我解决了自己的问题。希望这对以后的任何人都有帮助。程序:在平板电脑上启用开发者选项在Settings>DeveloperOptions下启用USB调试转到设