草庐IT

str_shuffle

全部标签

php - PHP str_word_count() 多字节安全吗?

我想使用str_word_count()在UTF-8字符串上。这在PHP中安全吗?在我看来它应该是(特别是考虑到没有mb_str_word_count())。但是在php.net上有很多人在搅浑水presentingtheirown'multibytecompatible'versionsofthefunction.所以我想我想知道...鉴于str_word_count只是计算由""(空格)分隔的所有字符序列,它在多字节字符串上应该是安全的,即使它不一定知道字符序列,对吧?UTF-8中是否有任何等效的“空格”字符,它们不是ASCII""(空格)?#我猜这就是问题所在。

php - 制表符分隔文件上的 str_getcsv

这适用于comma分隔的文件:array_map('str_getcsv',file('file.csv'));但这不适用于tab分隔的文件:array_map('str_getcsv("\t")',file('file.TLD')); 最佳答案 这应该适合你:array_map(function($v){returnstr_getcsv($v,"\t");},file('file.csv'));示例*.csv文件:abcd1234输出:Array([0]=>Array([0]=>a[1]=>b[2]=>c[3]=>d)[1]=>A

php - utf-8(PHP,str_replace)中是否有不同类型的双引号?

在PHP5.3中,我试图这样替换字符串中的双引号:$bar=str_replace('"','\'',$foo);但是一些保存在utf8数据库中的引号没有被替换,尽管它们看起来非常正常:“一些文本”我必须搜索不同的字符类型吗?如果有,它们是哪些? 最佳答案 有很多字符看起来像引号,但大多数都很少使用。用的比较多的是这三个:"U+0022QUOTATIONMARK“U+201CLEFTDOUBLEQUOTATIONMARK”U+201DRIGHTDOUBLEQUOTATIONMARK一些比较罕见的是FULLWIDTHQUOTATION

PHP,str_pad unicode 问题

我只是想将$str固定为5个字符,但做不到。$str="nü";echostr_pad($str,5,"ü");//givenüü我知道这是一个unicode问题并进行了很多搜索,但没有成功。我尝试了诸如;echostr_pad($str,4+mb_strlen($s),$s);echostr_pad($str,5+mb_strlen($s),$s);我也试过这个http://www.php.net/manual/de/function.str-pad.php#89754看到这个https://stackoverflow.com/a/11871948/362780.有这方面的经验吗?谢

c++ - 如何为 random_shuffle 编写 range-v3 Action ?

使用range-v3library(@EricNiebler),使编写算法代码更加紧凑,例如以下是生成一堆随机数的方法:#include#include#includeintmain(){usingnamespaceranges;autoconstN=10;std::vectorv;v.reserve(N);v|=action::push_back(view::iota(0,N));random_shuffle(v);copy(v,ostream_iterator(std::cout,","));}LiveExample.但是,我更愿意像这样使用假设的action::random_sh

c++ - `std::shuffle` 是否保证不同 vector 上相同种子的相同顺序?

我有两个元素数量相同的vector,但它们的类型大小完全不同。我需要对它们进行洗牌,以便在洗牌后两者具有完全相同的顺序(一个vector中的每个元素都与另一个vector中的每个元素相关)。我发现这样做的方式是://sizeof(a[0])!=sizeof(b[0])//a.size()==b.size(){std::mt19937g(same_seed);std::shuffle(a.begin(),a.end(),g);}{std::mt19937g(same_seed);std::shuffle(b.begin(),b.end(),g);}我可以放心两个vector将以相同的方式

C++。加权 std::shuffle

有没有一种方法可以使用标准库进行漂亮而优雅的加权洗牌?有std::discrete_distribution。我想要的是这样的:std::vectordata{Nelements};std::vectorweights{Nweights};std::shuffle(std::begin(data),std::end(data),somethingbasedondiscretedistribution); 最佳答案 如果OP意图是洗牌r项列表suchthat,givenalistofweightsw,theelementa[i]wit

c++ - Valgrind 未显示使用不正确的 c_str() 的无效内存访问

想象一下这样的代码:stringf(){stringr="ab";returnr;}intmain(){constchar*c=f().c_str();printf("%s.\n",c);return0;}这段代码可能会崩溃,对吧?因为c指向的那个字符串被破坏了。但是通过Valgrind运行它不会显示任何无效的内存访问。为什么?我知道Valgrind无法检查堆栈,但“ab”实际上位于堆上,对吧? 最佳答案 Thiscodemaycrash,right?Becausethatstringthatcpointstoisdestroyed

c++ - 在临时字符串上使用 string::c_str

这个问题在这里已经有了答案:C++destructionoftemporaryobjectinanexpression(4个答案)关闭8年前。关于临时对象何时被销毁,这是否有效:FILE*f=fopen(std::string("my_path").c_str(),"r");是否会在计算完fopen的第一个参数后或fopen调用后立即销毁临时对象。使用以下代码进行测试:#includeusingnamespacestd;structA{~A(){printf("~A\n");}constchar*c_str(){return"c_str";}};voidfoo(constchar*s)

c++ - C++ 中是否有等效的 str_replace?

在PHP中,有一个str_replace基本上执行查找和替换的功能。在C++中是否有此函数的等效项? 最佳答案 不完全是,但看看BoostStringAlgorithmsLibrary-在本例中为replacefunctions:std::stringstr("aabbaadd");boost::algorithm::replace_all(str,"aa","xx");str现在包含"xxbbxxdd"。 关于c++-C++中是否有等效的str_replace?,我们在StackOve