...
This example uses a variadic function to concatenate an arbitrary number of null-terminated character sequences (NTCS) in a single NTCS. Each call to the function must use a null pointer value to mark the end of the argument list.
| Code Block | ||||
|---|---|---|---|---|
| ||||
#include <cstdarg>
char *concatenate(char const *s, ...)
{
// code to actually concatenate the strings
}
char *separator = /* some reasonable value */;
char *t = concatenate("hello", separator, "world", NULL);
|
Calling this function without the trailing null pointer, or with an argument of any type other than "pointer to possibly-CV-qualified char" yields undefined behavior:
| Code Block | ||||
|---|---|---|---|---|
| ||||
char *u = concatenate("hello", separator, "world"); // undefined behavior
char *v = concatenate("hello", ' ', "world", NULL); // undefined behavior
|
...
Rather than use a variadic function, you can use a chain of binary operations:
| Code Block | ||||
|---|---|---|---|---|
| ||||
#include <string> string separator = /* some reasonable value */; string s = "hello" + separator + "world"; |
...