C++ 如果在std::wstring声明和std::setlocale()之后调用,则mbrlen()将无法返回
如果在std::wstring声明和std::setlocale()之后调用,则mbrlen()将无法返回 例如:C++ 如果在std::wstring声明和std::setlocale()之后调用,则mbrlen()将无法返回,c++,C++,如果在std::wstring声明和std::setlocale()之后调用,则mbrlen()将无法返回 例如: #include <locale> #include <wchar.h> int main() { std::wstring TestString; std::setlocale(LC_ALL, ""); mbstate_t mbs; size_t Res = mbrlen(NULL, 0, &mbs); //
#include <locale>
#include <wchar.h>
int main() {
std::wstring TestString;
std::setlocale(LC_ALL, "");
mbstate_t mbs;
size_t Res = mbrlen(NULL, 0, &mbs); //Initialize mbs
return 0;
}
不返回,但删除std::wstring声明可以解决问题,因此返回的结果很好:
#include <locale>
#include <wchar.h>
int main() {
//std::wstring TestString;
std::setlocale(LC_ALL, "");
mbstate_t mbs;
size_t Res = mbrlen(NULL, 0, &mbs); //Initialize mbs
return 0;
}
#包括
#包括
int main(){
//std::wstring测试字符串;
std::setlocale(LC_ALL,“”);
mbstate_t mbs;
size_t Res=mbrlen(NULL,0,&mbs);//初始化mbs
返回0;
}
或者删除setlocale()
(同时保留声明)也可以
fedora 20,g++4.8.3 20140624您应该在尝试使用它之前将其归零
#include <cstring>
memset(&mbs, 0, sizeof(mbs));
在尝试使用mbs之前,应将其归零
#include <cstring>
memset(&mbs, 0, sizeof(mbs));
在尝试使用mbs之前,应将其归零
#include <cstring>
memset(&mbs, 0, sizeof(mbs));
在尝试使用mbs之前,应将其归零
#include <cstring>
memset(&mbs, 0, sizeof(mbs));
足够公平-有缺陷的grrr示例:足够公平-有缺陷的grrr示例:足够公平-有缺陷的grrr示例:足够公平-有缺陷的grrr示例: