小编pti*_*ti7的帖子

字符串末尾的空字符 '\0'

我有以下代码。

#include <stdio.h>
#include <string.h>

#define MAXLINE 1000

int main()
{
    int i;
    char s[MAXLINE];

    for (i = 0; i < 20; ++i) {
        s[i] = i + 'A';
        printf("%c", s[i]);
    }

    printf("\nstrlen = %d\n", strlen(s)); // strlen(s): 20
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我应该写吗

s[i] = '\0';
Run Code Online (Sandbox Code Playgroud)

在循环执行后显式标记字符串的结尾还是自动完成?没有s[i] = '\0';函数 strlen(s) 返回正确的值 20。

c string null c-strings null-terminated

4
推荐指数
2
解决办法
352
查看次数

C++ 中的迭代器。如何在知道迭代器的情况下修改向量?

尝试理解 C++ 中的迭代器。例如,在下面的代码中我们打印一个向量。

using Iterator = vector<int>::iterator;

void PrintRange(Iterator range_begin, Iterator range_end) {
    for (auto it = range_begin; it != range_end; ++it) {
        cout << *it << " ";
    }
}

int main() {
    vector<int> numbers = {5, 3, 2, 1};
    PrintRange(begin(numbers), end(numbers));
    return 0;
}
// 5 3 2 1 
Run Code Online (Sandbox Code Playgroud)

我的问题是如何正确编写一个仅需要两个迭代器并修改向量的函数。例如,函数 my_sort 对向量进行排序,如果我们写

my_sort(begin(numbers), end(numbers));
Run Code Online (Sandbox Code Playgroud)

number 包含修改后的排序向量。

void my_sort(Iterator range_begin, Iterator range_end) {
    // how to modify a vector knowing its iterators ?
}
Run Code Online (Sandbox Code Playgroud)

c++ iterator

0
推荐指数
1
解决办法
119
查看次数

标签 统计

c ×1

c++ ×1

c-strings ×1

iterator ×1

null ×1

null-terminated ×1

string ×1