从字符串流到无符号字符
from stringstream to unsigned char
这是我的问题:
std::string str = "12 13 14 15 16.2"; // my input
我想要
unsigned char myChar [4]; // where myChar[0]=12 .. myChar[0]=13 ... etc...
我尝试使用istringstream:
std::istringstream is (str);
unsigned char myChar[4];
is >> myChar[0] // here something like itoa is needed
>> myChar[1] // does stringstream offers some mechanism
//(e.g.: from char 12 to int 12) ?
>> myChar[2]
>> myChar[3]
但我(显然)得到了
myChar[0]=1。。myChar[1]=2。。myChar[2]=3
不可能。。。我必须使用sprintf吗!??!不幸的是,我不能使用boost或C++11。。。
TIA
无符号字符值正好是一个字节的值。一个字节足以存储范围为0-255的非实数整数,或者仅存储一个符号(如"1"、"2"等)。因此,您可以将数字12存储在无符号字符值中,但不能存储"12"字符串,因为它由两个字符元素组成——"1"answers"2"(普通c字符串甚至有第三个"\0"字符串终止字符)。对于实际值,如16.2,您需要四个无符号字符来存储它的每个符号-"1"、"6"、"."、"2’。
我知道的唯一解决方案是解析字符串。这里有一个例子:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main ()
{
stringstream ss("65 66 67 68 69.2");
string value;
int counter=0;
while (getline(ss, value, ' '))
{
if (!value.empty())
{
cout << (unsigned char*) value.c_str() << endl;
counter++;
}
}
cout << "There are " << counter << " records." << endl;
}
采用STL设计的直线:
typedef std::basic_istringstream<unsigned char> uistringstream;
使用
typedef std::basic_string<unsigned char> ustring;
和用于转换
ustring ustr = (const unsigned char*) "char data";
相关文章:
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- C++中无符号字符溢出
- 使用无符号字符数组有效存储内存
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 从 std::vector<无符号字符>切片中提取 int?
- 将无符号字符的向量存储在数组中会给我 std::bad_alloc
- 使用 fopen 打开 .pak 文件并使该文件应用于 const 无符号字符* (C++)
- 库特无符号字符
- 寻找一种更好的方法来表示无符号字符数组
- C++ 无符号字符 *{varName};-> C#
- 如何返回/复制unique_ptr<无符号字符[]>的值?
- 将浮点数转换为无符号字符数组并打印出来
- 在函数中返回无符号字符数组,但不返回指针
- 如何在 C/C++ 中将无符号字符*转换为无符号字符数组?
- 如何返回实际值(在我的例子中是无符号字符数组)而不是来自 C++ 函数的指针?
- 如何将带有十六进制值的 std::string 转换为 std::vector<无符号字符>
- 无符号字符打印其 ASCII 值
- 字符数组到无符号字符 *
- 是否可以在 c++ 中将两位数保存在无符号字符中