2009-06-01 87 views
1

我已经给出了一个用C++编写程序的家庭作业任务,但我们不允许使用字符串类。但是,我们被允许使用iostream库,包括stringstream。我正在考虑使用stringstream,在那里我会用string来构建我的类,从函数返回等。使用stringstream代替字符串? - C++

这听起来像是一个好主意吗?我应该知道的任何陷阱?

+2

从stringstream获取内容的唯一方法是将其转换为字符串。 – workmad3 2009-06-01 07:05:39

回答

10

你也可以使用矢量<char>。这是一个很好的替代字符串。正如斯科特迈尔斯在他的“有效STL”书中说:

第三,考虑使用矢量<焦炭> 而不是字符串,矢量 实现不准是 引用计数,所以隐藏 多线程性能问题失败 出现。当然,你放弃 串的花哨成员函数,如果你 切换到矢量<焦炭>,但大部分 该功能可通过 STL算法无论如何,所以 you're,没有这么多,你是放弃 功能交易另一个 语法。

我认为可以使用字符串流出现的主要问题是,它不是严格意义上的容器。我不确定是否有可能在流中使用算法和其他常规STL。

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作为向量的索引也是可行的。