void CCreatEnt::CStringToSingleStr(const std::string input,std::vector &output)
{
std::string ch;
for(size_t i =0,len=0;i!=input.length();i+=len)
{
unsigned char byte = (unsigned)input[i];
if(byte >= 0xFC)//length 6
{
len = 6;
}
else if(byte >= 0xF8)
{
len = 5;
}
else if(byte >= 0xF0)
{
len = 4;
}
else if(byte >= 0xE0)
{
len = 3;
}
else if(byte >= 0xC8)
{
len = 2;
}
else
{
len = 1;
}
ch=input.substr(i,len);
output.push_back(ch);
}
}
这段代码是网络上查到的,但实际上返回的结果并不正确,若字符串为
1.3几个简单的命令5
返回值是
1
.
3
几个简
单的
命
令
5
请问如何才能按每个字符拆分呢?
第一用插入代码功能,插入的代码还是不好看,请见谅,希望高手能指点一下如何拆分成一个个的字符,非常感谢!
int _tmain(int argc, _TCHAR* argv[])
{
string str("1.3hello我的demo");
int len = MultiByteToWideChar(CP_ACP,0,str.c_str(),str.length(),NULL,0);
wchar_t* pwchar=new wchar_t[len+1];
MultiByteToWideChar(CP_ACP,0,str.c_str(),str.length(),pwchar,len);
pwchar[len]='\0';
vector<wchar_t> vec;
for (int i=0; i<len; i++)
{
vec.push_back(pwchar[i]);
}
delete pwchar;
getchar();
return 0;
}
就是全部转为双字节,因为有中文
转换出来的是数字
#include
#include
using namespace std;
int main()
{
string str;
cin >> str;
char s[str.length()]; //定义字符数组s,长度为字符串str的长度;
for(int i=0;i<str.length();i++)
s[i]=str[i]; //字符串 各个字符分离;
for(int i=0;i<str.length();i++) //输出
cout << s[i] << endl;
return 0;
}