从标题判断,我有点用相当复杂的方式完成了我的程序。但!我不妨问问xD在字符串中查找字符在矢量中
这是一个简单程序我在回答加速C++的问题3-3,这是一本令人敬畏的书,我认为。
我创建了一个向量:
vector<string> countEm;
接受所有有效的字符串。因此,我有一个包含字符串元素的向量。
接下来,我创建了一个功能
int toLowerWords(vector<string> &vec)
{
for(int loop = 0; loop < vec.size(); loop++)
transform(vec[loop].begin(), vec[loop].end(),
vec[loop].begin(), ::tolower);
是将输入转化为更容易计数全部小写。到现在为止还挺好。
我创建了第三个也是最后一个函数,实际上是count这个词,那就是我被卡住的地方。
int counter(vector<string> &vec)
{
for(int loop = 0; loop < vec.size(); loop++)
for(int secLoop = 0; secLoop < vec[loop].size(); secLoop++)
{
if(vec[loop][secLoop] == ' ')
这看起来很荒谬。使用一个二维数组来调用矢量的字符,直到找到一个空格。荒谬。我不相信这是一个优雅或甚至可行的解决方案。如果这是一个可行的解决方案,那么我会从空间回溯,并将我在单独的矢量中找到的所有字符复制到那些。
我的问题是。我怎样才能将一个字符串矢量分解成单独的单词,以便我可以实际计数它们?我想过使用strchr,但它没有给我任何epiphanies。通过尼尔
解决方案:
stringstream ss(input);
while(ss >> buffer)
countEm.push_back(buffer);
,从我可以很容易地算(经常性)字样。
然后我通过Wilhelm做了一个解决方案,我会重新编写它,因为我不小心删除了这个解决方案!愚蠢的我,但我会张贴,一旦我有它再次写^^
我想感谢你们所有的投入!解决方案已经工作,我成了一个更好的程序员。如果我可以投票你的东西,那么我会:P一旦我可以,我会的!并再次感谢!
嘿!我从未使用istringstream,所以我不知道你在这里工作的是什么样的魔法,但是如果我可以用这个解决方案解决问题,我会告诉你^^所以,谢谢!如上所述,一旦获得许可,我会选择积极的态度。 – IAE 2010-04-19 15:27:29