似乎没有标准的构造函数,所以我已经开始采用以下方式
void myMethod(char delimiter = ',')
{
string delimiterString = 'x';
delimiterString[0] = delimiter;
// use string version ...
}
有更好的方法吗?
似乎没有标准的构造函数,所以我已经开始采用以下方式
void myMethod(char delimiter = ',')
{
string delimiterString = 'x';
delimiterString[0] = delimiter;
// use string version ...
}
有更好的方法吗?
std::string
有一个构造函数可以为你完成这个任务:
std::string delimiterString(1, delimiter);
数字 1 是一个 size_t
类型并表示 char
参数的重复次数。
我知道这个问题很古老,但它确实出现在谷歌的首位,而且我花了一段时间才意识到答案。此外,其他答案中提到的填充构造函数并不适用于此。我想到了一个方法,既然 std::string
也就是 std::basic_string<char>
接受字符串字面值,这些字面值是 char *
,就像 char []
一样,那么它也可以接受一个 char
,就像 char []
一样。
char []
的标准初始化方式为 char
(s); 其中 ch
是类型为 char
的变量或常量:
char chPtr[] = {ch, '\0'}; // Will continue out of bounds without terminator
std::string str = {ch}; // Wont continue out of bounds (1)
// Also: std::string str{ch}; // operator= is optional
string
不使用\0
作为字符串终止符,而是将其视为另一个字符。char *
是行不通的:std::string str = (char*)ch; // Breaks All Output