【问题标题】:char array/string is empty when sent to functionchar 数组/字符串在发送到函数时为空
【发布时间】:2016-01-12 07:33:17
【问题描述】:

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

我先写出字符串,然后将其转换为 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] == '\0'){
            return out;
        }
        else{
            out += input[i];
        }*/
    }
    return out;
}

【问题讨论】:

  • 尝试使用 DDD 来观察输入值...反正我猜方法 block.c_str() 什么都没有返回
  • @101010 这不是我有问题的返回值。函数中的 std::cout。 input[i] 中没有任何内容。
  • @Izuel 你说得对,block.c_str() 什么都不返回,所以我更改为字符串作为输入,现在我得到了我填充和奇怪的字符串中的一些地方。如果我尝试写出整个字符串,我什么也看不到。
  • block 是否包含单个空字符?

标签: c++ string char


【解决方案1】:

完全不清楚你试图达到什么目标,或者换句话说,你的问题并不完整。

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

out 是一个空字符串,在函数结束时返回。

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-24
    • 2011-12-27
    • 2021-05-23
    • 2022-09-23
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    相关资源
    最近更新 更多