1

我得到了一个用 C++ 编写程序的家庭作业,但我们不允许使用字符串类。但是,我们可以使用iostream库,包括 stringstream。我正在考虑使用 stringstream 来构建我的类、从函数返回等。

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

4

2 回答 2

10

您也可以使用矢量<char>。它是字符串的一个很好的替代品。正如 Scott Meyers 在他的“Effective STL”一书中所说:

第三,考虑使用vector<char>代替字符串,vector实现不允许被引用计数,这样隐藏的多线程性能问题就不会出现。当然,如果您切换到 vector<char>,您将放弃字符串的花哨的成员函数,但是无论如何,大多数功能都可以通过 STL 算法获得,因此您并没有放弃功能,而是将一种语法换成另一种语法。

我认为使用 stringstream 可能出现的主要问题是它不是严格意义上的容器。我不确定是否可以将算法和其他常规 STL 内容与流一起使用。

于 2009-06-01T06:56:41.600 回答
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 是向量的索引。

于 2009-08-19T00:37:40.353 回答