草庐IT

utf8_encoded_str

全部标签

c++ - str.clear() 和 str = ""之间的区别

我有一个C++std::stringstr,我已将其设置为某个字符串,现在想重置它以便再次使用它。调用str.clear()与调用str=""有区别吗?编辑。澄清一下:我通过向其附加一个char数组缓冲区来重用str:str.append(buf) 最佳答案 没有有效的区别。根据实现的不同,使用clear()可能比将char指针分配给零更快。但是,即使情况并非如此,也更喜欢更清楚地表达您的意图的方法。如果要清除字符串,请使用clear()。如果要分配空字符串,请使用=""。虽然我会注意到,但你说,“所以我可以再次使用它。”又用它干什

c++ - 'for(auto &str : vec)' 内部 for 循环的目的是什么?

我是C++的新手,正在尝试学习vector的概念。我在网上看到这段代码。我的问题是,'for(auto&str:vec)'中的内部for循环的目的是什么?为什么作者要对第一个引用(&str)创建第二个引用(&c)?intmain(){vectorvec;for(stringword;cin>>word;vec.push_back(word)){}for(auto&str:vec){for(auto&c:str){c=toupper(c);}}for(inti=0;i!=vec.size();++i){if(i!=0&&i%8==0)cout 最佳答案

c++ - boost UTF-16 字符串的库?

是否有任何boost库可以帮助处理UTF-16(或更高版本)字符串? 最佳答案 我用了ICU过去在处理C++编码时取得了成功。 关于c++-boostUTF-16字符串的库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6242387/

c++ - `(c = *str) != 0` 是什么意思?

intequiv(char,char);intnmatches(char*str,charcomp){charc;intn=0;while((c=*str)!=0){if(equiv(c,comp)!=0)n++;str++;}return(n);}“(c=*str)!=0”到底是什么意思?有人可以向我解释一下或帮助我提供正确的术语以自己搜索解释吗? 最佳答案 这个表达式有两部分:c=*str-这是通过取消引用指针对c的简单赋值,val!=0-这是与零的比较。这是可行的,因为赋值是一个表达式,即它有一个值。赋值的值与被赋值的值相同,

Python:来自多个CSV的多个数据帧,将CP1252编码到UTF8

我有几个CSV文档的拉链。我将CSV提取到一个称为“登台”的文件夹中。这些文档在WindowsCP1252中编码。我想做的是在每个CSV文件中单独阅读作为单独的数据框架,然后在我删除所有空值后用UTF8编码的旧文件覆盖旧文件。或者,不用将CSV重写为UTF8,我可以严格地从生成的熊猫数据库中编码数据库。任何帮助都将不胜感激-我已经浏览了堆栈溢出论坛,主要主题似乎将多个CSV串成一个单个数据帧-我需要的是每个CSV的单独数据帧。另外,我必须删除N/A值,但是,在CSV中,它们具有随机数(即N/A(3)或N/A(1)等)这是我正在使用的代码:#Createthestagingdirectoryst

c++ - std::string 的 strlen(str.c_str()) 和 str.length() 之间的区别

作为一种隐含的理解,我一直认为std::string的每一个实现必然必须满足strlen(str.c_str())==str.length()对于每个字符串str。C++标准对此有何规定?(是吗?)背景:至少VisualC++和gcc附带的实现没有这个属性。考虑这个例子(参见hereforaliveexample)://Output://stringsaysitslengthis:13//strlensays:5#include#include#includeintmain(){std::stringstr="Hello,world!";str[5]=0;std::cout当然,没有注

c++ - 除了使用 str.substr( ) 在给定位置提取子字符串之外,还有其他方法吗?

我正在尝试比较两个std::strings,并确定字符串A是否与字符串B相同,但插入或删除了单个字符。否则返回假。例如:“start”和“strt”或“ad”和“add”目前:if(((sizeA-sizeB)!=1)&&((sizeB-sizeA)!=1)){returnfalse;}if(sizeA这可以完美地工作,但是gprof告诉我这个功能陷入了困境。我尝试将for循环转换为使用迭代器来访问字符,但这使我的运行时间增加了一倍。我将它缩小到我对std::string.substr()的使用,因为每次stringA和stringB的大小相差1时它都会构造新的字符串。当第一个字符不同

基于另一列中的str中的str中添加int值

我正在尝试编写一个代码,该代码将加起来每个状态中的所有“计数”。这是我的.dbf(CSV)文件的示例。CountLatLonindex_righSTATE134531.551580000000000-88.4483800000000001992Alabama44531.999867999999900-88.4045430000000001992Alabama29932.448521000000000-88.3601960000000001992Alabama10632.897511999999900-88.3153290000000001992Alabama22933.346817000000

c++ - 如何在 C/C++ 中将字符串从 UTF8 转换为 Latin1?

我的问题很简单,但我至今找不到解决方案:如何在C++中将UTF8编码的string转换为latin1编码的string而无需使用任何额外的库(如libiconv)?到目前为止我能找到的每个示例都是针对latin1到UTF8的转换? 最佳答案 typedefunsignedvalue_type;templatesize_tget_length(Iteratorp){unsignedcharc=static_cast(*p);if(cvalue_typeget_value(Iteratorp){size_tlen=get_length(

c++ - Clang:将 bind 或 mem_fn 与 string::c_str 和 transform 结合使用时出现问题

尝试将std::stringvector转换为constchar*vector:#include#include#include#includeintmain(intargc,char**argv){std::vectorvalues;values.push_back("test1");values.push_back("test2");values.push_back("test3");std::vectorc_values(values.size());std::transform(values.begin(),values.end(),c_values.begin(),std::