如何转换" \ u002f"到" /" (用c ++)?

时间:2014-04-23 07:28:47

标签: c++ unicode encoding

我必须遵循从共享点获得的字符串: \ u002fsites \ u002fblabla \ u002fShared Documents \ u002fkittens.xml

我试图将其转换为: / sites / blabla / Shared Documents / kittens.xml

我用谷歌搜索它,发现它是Unicode编码的,但是我找不到任何可以转换它的东西,技术上我可以编写一个小函数将所有“\ u002f”转换为“/”,但我不认为这是正确的做法。

如果任何人能够对此事有所了解,那将会非常有帮助。

由于

3 个答案:

答案 0 :(得分:4)

我找到了一个解决我问题的库,我想分享解决方案,以防其他人偶然发现这个问题。

图书馆名为ICU

使用非常简单:

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

inoutstring时。

答案 1 :(得分:0)

我不知道C ++中是否有准备好的功能,但你可以通过这个算法做到这一点:

1-find" \"使用字符串类中的find函数在第一个字符串中的字符,将其更改为" /" 2-从这一点省略4个nexts(包括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;
}

答案 2 :(得分:0)

如果该字符串是字符串文字,编译器应该采用 关心这个翻译;序列\uxxxx 是一个通用的角色名称&#34;。如果您正在阅读它的数据 从外部来源,我不知道任何标准功能 会改变它;你必须自己写。 (和 一旦你添加了所有的东西,正确的做法并不是那么简单 必要的错误检查。)