gpt4 book ai didi

c++ - 在 vector 中的字符串中查找字符

转载 作者:搜寻专家 更新时间:2023-10-31 00:48:26 25 4
gpt4 key购买 nike

从标题来看,我的程序有点复杂。但!我还是问问吧 xD

这是我为回答 Accelerated C++ 的问题 3-3 而做的一个简单程序,在我看来这是一本很棒的书。

我创建了一个 vector :

vector<string> countEm;

接受所有有效字符串。因此,我有一个包含字符串元素的 vector 。

接下来,我创建了一个函数

int toLowerWords( vector<string> &vec )
{
for( int loop = 0; loop < vec.size(); loop++ )
transform( vec[loop].begin(), vec[loop].end(),
vec[loop].begin(), ::tolower );

将输入拆分为所有小写字符以便于计数。到目前为止,还不错。

我创建了第三个也是最后一个函数来实际计算单词,这就是我遇到的问题。

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] == ' ' )

这看起来很可笑。使用二维数组调用 vector 的字符,直到找到一个空格。荒谬的。我不认为这是一个优雅甚至可行的解决方案。如果这是一个可行的解决方案,我会从空间回溯并复制我在单独的 vector 中找到的所有字符并计算那些

那么我的问题是。我怎样才能将字符串 vector 分解成单独的单词,以便我可以实际计算它们?我考虑过使用 strchr,但它并没有给我任何顿悟。


Neil 的解决方案:

stringstream ss( input );
while( ss >> buffer )
countEm.push_back( buffer );

由此我可以很容易地计算出(重复出现的)单词。

然后我通过 Wilhelm 做了一个解决方案,我会在重写后发布,因为我不小心删除了那个解决方案!我真笨,但是一旦我再次写完它就会发布 ^^

我要感谢你们所有人的投入!解决方案奏效了,我成为了一个更好的程序员。如果我可以投票给你的东西,那么我会 :P 一旦可以,我会的!再次感谢!

最佳答案

如果单词总是以空格分隔,最简单的拆分方法是使用字符串流:

string words = ....   // populat
istringstream is( words );

string word;
while( is >> word ) {
cout << "word is " << word << endl;
}

当然,您会想要编写一个函数来执行此操作,并将其应用于您的字符串。或者最好不要完全存储字符串,而是在初始输入时将其拆分为单词。

关于c++ - 在 vector 中的字符串中查找字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2666325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com