我得到了一个用 C++ 编写程序的家庭作业,但我们不允许使用字符串类。但是,我们可以使用iostream库,包括 stringstream。我正在考虑使用 stringstream 来构建我的类、从函数返回等。
这对您来说是个好主意吗?我应该注意哪些陷阱?
您也可以使用矢量<char>。它是字符串的一个很好的替代品。正如 Scott Meyers 在他的“Effective STL”一书中所说:
第三,考虑使用vector<char>代替字符串,vector实现不允许被引用计数,这样隐藏的多线程性能问题就不会出现。当然,如果您切换到 vector<char>,您将放弃字符串的花哨的成员函数,但是无论如何,大多数功能都可以通过 STL 算法获得,因此您并没有放弃功能,而是将一种语法换成另一种语法。
我认为使用 stringstream 可能出现的主要问题是它不是严格意义上的容器。我不确定是否可以将算法和其他常规 STL 内容与流一起使用。
如果情况是没有字符串的商店数据库,您可以简单地使用枚举。
enum {
Prod1,
Prod2,
Prod3
};
这意味着您可以将整数作为标识符传递,然后只需使用带有 switch 语句的打印函数。
void PrintProd(int product) {
switch(product) {
case Prod1:
cout << "Product 1" << endl;
break;
case Prod2:
cout << "Product 2" << endl;
break;
// etc.
}
}
这可以让你绕过很多麻烦。如果您不介意处理堆,则分配产品名称的 char* 向量也可以工作,其中 id 是向量的索引。