字符数组/字符串在发送到函数时为空

char array/string is empty when sent to function

本文关键字:函数 数组 字符串 字符      更新时间:2023-10-16

我有一个函数,目前什么都不做,因为我作为参数发送的字符数组没有值。我可以在函数之前写出数据并获得预期的输出,但是如果我在函数中写出,即使这是我做的第一件事,也不会产生任何结果。

我首先写出字符串,然后将其转换为 char 数组。我也尝试只使用一个普通字符串作为参数,结果相同。

std::cout << block;
block = this->removeNullCharacters(block.c_str());

第一个 cout 的输出是:"0/">

下面函数的输出什么都没有。控制台中根本不显示任何内容。

std::string FileSystem::removeNullCharacters(const char * input){
    std::string out = "";
    for(int i = 0; i < 512; ++i){
        std::cout << i << ": " << input[i];
        /*if(input[i] == ''){
            return out;
        }
        else{
            out += input[i];
        }*/
    }
    return out;
}

完全不清楚你试图实现什么,或者换句话说,你的问题不完整。

input 是指向 char 的指针,指向大小为 512 的 char s array的第一个元素。

out 是一个空字符串,在函数末尾返回。

block是精神分裂症,我猜是指向charstd::string的指针。你真的需要解决这个问题。

试试这个。我认为您想将指向 char s 序列的指针传递给函数,并将每个char连接到string,直到序列的末尾(由 终止(。完全忘记大小,只需将空终止用作循环条件。

std::string FileSystem::removeNullCharacters(const char * input){
    std::string out = "";
    for(int i = 0; input[i] != ''; ++i){
        std::cout << i << ": " << input[i];
        out += input[i];
    }
    return out;
}

但是你必须确保传入一个char s数组或一个指向char的有效指针(这是char s序列的开头,最后一个元素是(。