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

C++ C++;:将值(指向)设置为0有什么作用?,c++,pointers,C++,Pointers,我有一段代码: 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 =

我有一段代码:

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;
    }
}
程序完成后的Test2.txt如下所示:

Smith:00
Richard:01
Johansson:02
0:Smith
1:Richard
2:Johansson
我很难理解为什么它看起来像这样,我用注释标记的代码块中的行中发生了什么,为什么它会更改输出?我知道它会做什么更改,但我不明白为什么,有人能帮我吗?

代码是

  • 将输入文件逐行(最多为
    SZ
    -1个字符/行)读入
    buf

  • 对于每一行:

    • cp
      设置为指向
      buf
      的前面,然后向前移动
      cp
      以查找
      :'
      字符
    • 找到后,将
      ':'
      字符替换为
      '\0'
      (空)字符,然后将
      cp
      前进到它前面和下一个字符(
      '0'
      数字)
    • 最后将值格式化为输出文件中的一行
      cp
      被写为以null结尾的字符串,从第二个数字开始,在
      buf
      末尾的null终止符结束
      buf
      衰减为
      char*
      指针,因此它也被写为以null结尾的字符串,从
      buf
      的开头开始,到
      的结尾:'
      -转换为-
      '\0'
      字符
代码是

  • 将输入文件逐行(最多为
    SZ
    -1个字符/行)读入
    buf

  • 对于每一行:

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

提示:这不是设置指向
0
的指针。提示:这不是设置指向
0
的指针。为什么是“\0”而不是“0”?因此,如果我将字符设置为“something0something”,它将另存为“something”?@Ania
0
'\0'
在分配给
字符时是一样的。它们不同于
'0'
字符为什么“\0”而不是“0”?因此,如果我将字符设置为“something0something”,它将另存为“something”?@Ania
0
'\0'
在分配给
字符时是相同的。它们不同于
'0'
字符