编程语言
首页 > 编程语言> > c# – 将向量{1,2,3}转换为字符串“1-2-3”AS DIGITS

c# – 将向量{1,2,3}转换为字符串“1-2-3”AS DIGITS

作者:互联网

我想在std :: vector< unsigned char>中显示数字.在屏幕上,但在前往收件人的途中,我需要将这些数字填入std :: string.

无论我尝试了什么(atoi,reinterpret_cast,string.c_str()……),都给了我这些原始数字的无意义或字母表示 – 即它们对应的ascii字符.

那么我如何轻松(最好是标准方法)转换矢量< unsigned char> {1,2,3}成一个字符串“1-2-3”?

在我提到的原帖(后来编辑)中,我可以用C#或Java做到这一点.
根据πάνταῥεῖ的要求提供C#或Java中的示例,这里有一个快速的Linq C#方式:

    public static string GetStringFromListNumData<T>(List<T> lNumData)
    {
        // if (typeof(T) != typeof(IConvertible)) throw new ArgumentException("Expecting only types that implement IConvertible !");
        string myString = "";
        lNumData.ForEach(x => myString += x + "-");
        return myString.TrimEnd('-');
    }

解决方法:

只需使用std::ostringstream

std::vector<unsigned char> v{1,2,3};
std::ostringstream oss;
bool first = true;
for(auto x : v) {
    if(!first) oss << '-'; 
    else first = false;
    oss << (unsigned int)x;
}
std::cout << oss.str() << std::endl;

标签:data-conversion,c,string,vector,c-2
来源: https://codeday.me/bug/20191003/1845718.html