如何转换“\ u002f”到“/”(在C ++)?

问题描述 投票:2回答:3

我有以下字符串我从SharePoint得到:\ u002f \ u002f布拉布拉\ u002f共享文档\ u002fkittens.xml

我试图将其转换为:/网站/布拉布拉/共享文档/ kittens.xml

我GOOGLE了它,发现它是Unicode编码,但我无法找到任何东西,将其转换,技术上我可以写一个小函数,将所有的“\ u002f”到“/”,但我不认为这是正确的事情。

如果任何人能在这个问题上提供一些线索,将是非常有益的。

谢谢

c++ unicode encoding
3个回答
4
投票

我发现,解决我的问题库,我想分享的情况下,别人会偶然发现这个问题的解决方案。

所谓的ICU库

而且使用非常简单:

icu::UnicodeString converter = icu::UnicodeString(in.c_str(),in.length());
icu::UnicodeString newUstring = converter.unescape();
newUstring.toUTF8String(out);

inoutstring


0
投票

我不知道是否有在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;
}

0
投票

如果字符串是一个字符串,则编译器应该照顾这个翻译的;序列\uxxxx是一个“通用字符名”。如果这是你从外部源读取数据,我不知道这将其转换成任何标准的功能;你必须自己编写。 (而且,它的权利不是小事,一旦你添加了所有必要的错误检查。)

© www.soinside.com 2019 - 2024. All rights reserved.