如何将"u002f"转换为"/"(在 C++ 中)?

How to convert "u002f" to "/" (in c++)?

本文关键字:C++ u002f 转换      更新时间:2023-10-16

>我必须遵循我从共享点获得的字符串:\u002f站点\u002fblabla\u002f共享文档\u002fkittens.xml

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

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

如果有人能对这个问题有所了解,那将是非常有帮助的。

谢谢

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

名为ICU的图书馆

而且使用非常简单:

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

inout string时.

我不知道C++中是否有现成的函数来做到这一点,但你可以通过这个算法做到这一点:

1-使用字符串类中的查找函数在第一个字符串中查找"\"字符,将其更改为"/"2-从这一点省略到4个下一个(包括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是一个"通用字符名称"。 如果是您正在读取的数据来自外部来源,我不知道任何标准功能这将转换它;你必须自己写。 (和正确处理并非易事,一旦您添加了所有必要的错误检查。