现代做法是什么?像<cstring>
这样的头文件已经被弃用,而一些编码风格禁止使用"C-like"函数。我有三种方法可以完成同样的事情。哪种方法最符合现代C ++的习惯用法?
1. 使用迭代器并包含空终止符。
{
std::string test{"hello, world!"};
char* output = new char[test.size() + 1];
std::copy(test.begin(), test.end(),
output);
output[test.size() + 1] = '\0';
std::cout << output;
delete output;
}
2. 使用c_str()
函数,该函数包括空字符终止符。
{
std::string test{"hello, world!"};
char* output = new char[test.size() + 1];
std::copy(test.c_str(), test.c_str() + std::strlen(test.c_str()),
output);
std::cout << output;
delete output;
}
3. Use std::strcpy
{
std::string test{"hello, world!"};
char* output = new char[test.size() + 1];
std::strcpy(output, test.c_str());
std::cout << output;
delete output;
}
我不想在面试官面前显得像个新手,被说成“哦,你用strcpy,你一定是C程序员。”
try
包装整个块,并捕获std::bad_alloc
。另外,“像<cstring>这样的头文件已经被弃用了”-从什么时候开始?! - Daniel Kamil Kozar<cstring>
绝对 没有 废弃。<string.h>
废弃了,但<cstring>
是一个普通的标准头文件。 - Baum mit Augen