我有以下字符串我从SharePoint得到:\ u002f \ u002f布拉布拉\ u002f共享文档\ u002fkittens.xml
我试图将其转换为:/网站/布拉布拉/共享文档/ kittens.xml
我GOOGLE了它,发现它是Unicode编码,但我无法找到任何东西,将其转换,技术上我可以写一个小函数,将所有的“\ u002f”到“/”,但我不认为这是正确的事情。
如果任何人能在这个问题上提供一些线索,将是非常有益的。
谢谢
我发现,解决我的问题库,我想分享的情况下,别人会偶然发现这个问题的解决方案。
所谓的ICU库
而且使用非常简单:
icu::UnicodeString converter = icu::UnicodeString(in.c_str(),in.length());
icu::UnicodeString newUstring = converter.unescape();
newUstring.toUTF8String(out);
当in
和out
是string
。
我不知道是否有在C待机功能++这样做或没有,但你可以通过这个算法做到这一点:
1 - 查找“\”字符在使用find功能串类的第一个字符串,以“/” 2 - 省略从这点4周的nextS(incluse U002)等改变它...
#include <iostream>
#include <string>
using namespace std;
string process(string str){
string result="";
for (int i=0;i<str.size();i++){
if(str[i]=='\\' ) {
result.push_back('//');
i+=5;
}
else
result.push_back(str[i]);
}
return result;
}
int main(){
string path;
getline(cin,path);
cout<<process(path)<<endl;
}
如果字符串是一个字符串,则编译器应该照顾这个翻译的;序列\uxxxx
是一个“通用字符名”。如果这是你从外部源读取数据,我不知道这将其转换成任何标准的功能;你必须自己编写。 (而且,它的权利不是小事,一旦你添加了所有必要的错误检查。)