检查字符数组的所有元素



我有一个字符串流,我有 8 个字符数组,如下所示:

char str1[4] = "2001";
char str2[4] = "677F";
char str3[4] = "0000";
char str4[4] = "4004";
stringstream ss;
ss << str1;
ss << str2;
ss << str3;
ss << str4;

我不想在字符串流中添加所有元素均为零的数组,即 str1、str2 和 str4 应该只添加 str3 不应该添加到流中。

此外,如果前导字符数组只有零,我必须将它们替换为 (:),类似于 IPv6 地址:

2001:0db8:0070:0040

:0000:0000:0000:0000

2001:0db8:0070:0040::

我该怎么做?

你想要扫描字符串,如果你找到除'0'以外的任何内容,你可以停止并将字符串附加到流中。如果你到达了溪流的尽头,除了'0'什么也没找到,你什么也没做。

void appendIfNotZero(stringstream &stream, char *str)
{
    char *ptr = str;
    // If *ptr == 0, we've reached the end of the string.
    while(*ptr) {
        // If *ptr != '0', the string is not all zeros, and we're done.
        if(*ptr != '0') {
            stream << str;
            return;
        }
        // Otherwise, keep scanning the string.
        ptr++;
    }
}
...
appendIfNotZero(ss, "2001");
appendIfNotZero(ss, "677F");
appendIfNotZero(ss, "0000");
appendIfNotZero(ss, "4004");
稍微

简化一下godel。

char str1[] = "2001";
stringstream buffer;
string item = str1; 
if ( item != "0000" ){
   buffer << item;
}
// same for str2-4.

将 strN 放在数组中将进一步简化事情。

相关内容

  • 没有找到相关文章

最新更新