C++:将值(指向)设置为 0 有什么作用

C++: What does setting a value (pointed at) to 0 do?

本文关键字:什么 作用 设置 将值 指向 C++      更新时间:2023-10-16

我有这段代码:

int main()
{
    const int SZ = 100;
    char buf[SZ];
    ifstream in("Test1.txt");
    ofstream ou("Test2.txt", ios::app);
    while (in.getline(buf, SZ)) {
        char* cp = buf;
        while (*cp != ':')
            ++cp;
        *cp = 0;//<- this line
        cp += 2;
        ou << cp << ":" << buf << endl;
    }
}

Test1.txt 看起来像这样:

Smith:00
Richard:01
Johansson:02

程序完成后的Test2.txt如下所示:

0:Smith
1:Richard
2:Johansson

正在努力理解为什么它看起来像这样,我用注释标记的代码块中的行发生了什么,为什么它会改变输出?我知道它带来了什么变化,但我不明白为什么,有人可以帮忙吗?

代码是

  • 行读取输入文件(每行最多 SZ -1 个字符(buf

  • 对于每行:

    • cp设置为指向buf的前面,然后向前前进cp寻找':'字符
    • 找到后,将':'字符替换为'' (null( 字符,然后前进cp它和下一个字符('0'数字(
    • 最后将值格式化为输出文件中的一行。 cp 写为以 null 结尾的字符串,从第 2 位数字开始,到 buf 末尾的 null 终止符结束。 buf衰减为char*指针,因此它也被写为以 null 结尾的字符串,从 buf 的开头开始,到':'''字符结束。