使用stringstream代替字符串? - C ++

时间:2009-06-01 06:42:31

标签: c++ string iostream

我已经完成了用C ++编写程序的作业,但我们不允许使用字符串类。但是,我们可以使用iostream库,包括stringstream。我正在考虑使用stringstream,我将使用字符串来构建我的类,从函数返回等等。

这听起来对你来说是个好主意吗?我应该注意哪些陷阱?

2 个答案:

答案 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作为向量的索引也可以工作。