我已经完成了用C ++编写程序的作业,但我们不允许使用字符串类。但是,我们可以使用iostream库,包括stringstream。我正在考虑使用stringstream,我将使用字符串来构建我的类,从函数返回等等。
这听起来对你来说是个好主意吗?我应该注意哪些陷阱?
答案 0 :(得分:10)
你也可以使用vector< char>。它是字符串的一个很好的替代品。正如Scott Meyers在他的“Effective STL”一书中所说:
第三,考虑使用向量< char> 而不是字符串,矢量 不允许实现 引用计数,如此隐藏 多线程性能问题失败 出现当然,你放弃了 如果你的话,字符串的花哨成员函数 切换到矢量< char>,但大多数 该功能可用 无论如何,通过STL算法,所以 你不是那么放弃 交易时的功能 另一种语法。
我认为使用stringstream可能产生的主要问题是它不是严格意义上的容器。我不确定是否可以将算法和其他常规STL内容用于流。
答案 1 :(得分:0)
如果情况是没有字符串的商店数据库,您只需使用枚举。
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作为向量的索引也可以工作。