C++:将值(指向)设置为 0 有什么作用
C++: What does setting a value (pointed at) to 0 do?
我有这段代码:
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
的开头开始,到':'
转' '
字符结束。
- 将
相关文章:
- archive_read_support_filter_all() 有什么作用?
- 当我们为(;;) 写作时,它做了什么?for 循环中的双分号有什么作用?
- 这个递归函数有什么作用?运行时的复杂性是多少?
- DrawShadow 中的 Elevation 究竟有什么作用?
- 测试"stream >> char"有什么作用?
- "uFlags &= ~CHN_PANNING"命令有什么作用?
- GCC 的 -Wpsabi 选项究竟有什么作用?压制它意味着什么?
- int** a = new int*[n]();这个函数有什么作用?
- C++ 此函数调用之前的(void)有什么作用?
- i+=(i&-i) 有什么作用?它是便携式的吗?
- 这个size_t在 lambda 中有什么作用?C++代码
- 数组下标运算符 ([ ]) 对数组有什么作用?
- 结构之外的节点 * head 有什么作用?
- 重载括号运算符有什么作用?
- clang的"-Ofast"选项在实践中有什么作用,特别是对于与gcc的任何差异?
- std::make_unique_for_overwrite() 对 std::make_unique() 有什么作用?
- 运算符 delete[] 有什么作用?
- 下面的代码有什么作用?c++
- 这个陈述'p = I.ptr<uchar>(i);有什么作用?
- 这个嵌套的名称空间定义有什么作用