计算字符数组中一行中的字符数

时间:2012-02-21 03:47:35

标签: c++ visual-studio visual-studio-2010 visual-c++

我正在尝试编写一个程序,在字符数组中查找字符串并随机输出字符串以及输出字符串数和长度。我似乎遇到的麻烦就是挑出长度。我不确定是否应该使用注释中存储的长度(如果它甚至可以这样做)或计算每个字符并输出那样的长度。我不确定如何做到这一点。

char * strings [] ={

// String 1 of 5000:  Length = 185
"J1{GW3_%-3s_%p*E<ed<qLB#YHN%S8.odr5|[QPz&Hslk#3vi[)T3wgh3lHdVtTGz|M1RsGy_r=J]Rgp`0+s)pbvpm<u'8NsPX:Uk)kU,d5t@w[{2efjt*z_`eOqa#iP3z)T<(eYWb%W{5g?ynp*<jfEeLUA5:ukgvw$Le,Yjv*o{a/,tV#dG1|+D", 

// String 2 of 5000:  Length = 9
"^PuU]gjh)", 

}

现在我正在使用rand函数将5000个字符串输出到输出文件,如此

outfile1 << strings[rand()%5000] << endl;

这个函数嵌套在一个循环中,似乎随机输出,但每次都是相同的随机模式,所以也许我应该以不同方式为rand函数设定种子。

无论如何,在显示输出文件中每个字符串的长度时,我真的很迷茫。有没有人对我如何做到这一点有任何建议?这是作业,所以我想要一些关于如何应用这个而不是直接答案的信息。 :)

截至目前,我的输出是:

#11 (Length:168) - JZn'TGF&#K=EohoZT
#12 (Length:189) - DiF9ao^T,7rtQ#Yc>n{_YIG_y
#13 (Length:50) - y,|l2;hA;H;pHz?|jLADh

如您所见,字符串输出正确但长度不正确。

4 个答案:

答案 0 :(得分:0)

您最终要解决的问题是,您是否正在尝试解析数据?

我不明白这'在字符数组中找到字符串并随机输出字符串';你必须知道一个char数组可以被理解为一个巨大的字符串,所以你是否在寻找特殊的分隔符并且你想返回所有有效匹配的列表?

如果是这样,你如何区分源中有效字符串和随机内容之间的区别;它应该被划分吗?

如何随机输出字符串?

请添加一些有关您要解决的问题以及您正在处理的数据的详细信息。

答案 1 :(得分:0)

str.size()其中str是你的字符串变量,将输出字符串的长度

答案 2 :(得分:0)

  1.   

    函数srand(时间(0));

  2. 生成适当的伪随机数的标准方法。 'srand'根据函数中传递的数字指定一个种子,而'time(0)'将每秒返回不同的数字,所以这应该解决你的'相同模式'问题。

    1. a)您可以使用strlen

      b)或者你可以简单地编写一个函数,它将通过字符串检查每个字符为0(0 - 行的结尾),然后返回当前的迭代值。

答案 3 :(得分:0)

///更新了答案//

我认为你想要做的是输出数组中的每个字符串并计算它们的每个长度吧???我写了这个快速程序,它工作正常。

char* strings[] = {"hellothisistom", "nicetomeetyou"};

for (int i = 0; i<2; i++)
{
    int k = rand()%2;
    cout<< strings[k] << endl;
    cout<< strlen(strings[k])<<endl;

}

您可以使用输出文件字符串替换cout。 确保使用相同的k来获取字符串和长度!

/////////////////////////////////////////////// /

字符是一位字符,例如“A”,“b”,“%”等。 字符串只是一个字符数组。 另一方面, string 是一个表示一系列字符的特殊类。

字符串,就像普通数组一样工作。 在您的情况下,strings(这是一个字符数组),您可以使用sizeof(strings)/sizeof(strings[0])来查找字符数。

正如您所提到的,该字符串由许多短字符串组成。除非有一些特殊字符将单词分开,否则没有办法(至少不容易)将字符串分成单词。

例如,如果您的字符串是hellothisistom。没有办法将单词分开......除非你进入自然语言处理。 如果您的字符串类似于hello/this/is/tom,其中有一些东西可以分隔单个单词,那么您可以使用多种方法来提取单词。您可以查看以下网站,了解您可以使用的工具。 http://www.cplusplus.com/reference/clibrary/cstring/

例如,在循环中,您可以搜索该特殊字符的第一个匹配项,然后搜索该特殊字符。然后你只需复制两者之间的字符,输出那些字符和大小(使用上面提到的方法)。然后继续下一个。

输出stings[rand()%5000]时,strings内是否只有一堆随机字符?