我正在尝试编写一个程序,在字符数组中查找字符串并随机输出字符串以及输出字符串编号和长度。我似乎遇到的麻烦是选择长度。我不确定我是否应该使用存储在评论中的长度(如果它甚至可以这样做)或计算每个字符并以这种方式输出长度。我不太确定该怎么做。
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 函数将 5,000 个字符串输出到这样的输出文件
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
如您所见,字符串输出正确但长度不正确。
最佳答案
///更新的答案//
我想你想做的是输出数组中的每个字符串并计算它们的长度对吗???我编写了这个快速程序并且运行良好。
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'、'%'等。 字符串 只是一个字符数组。 另一方面,字符串 是表示一系列字符的特殊类。
字符串,像普通数组一样工作。
在你的情况下, strings
(这是一个字符数组),你可以只使用 sizeof(strings)/sizeof(strings[0])
来找出数量人物。
如您所说,该字符串由许多短字符串组成。除非有一些特殊的字符来分隔单词,否则没有办法(至少不是简单的方法)将字符串分隔成单词。
例如,如果您的字符串是hellothisistom
。没有办法将单词分开......除非你进入自然语言处理。
如果你的字符串像hello/this/is/tom
,其中有一些东西将各个单词分开,那么你可以使用多种方法来提取单词。您可以查看下面的站点以了解可以使用的工具。
http://www.cplusplus.com/reference/clibrary/cstring/
例如,在循环中,您可以搜索该特殊字符的第一次出现,然后再搜索下一个。然后你只需复制中间的字符,输出这些字符和大小(使用上面提到的方法)。然后继续下一个。
当你输出stings[rand()%5000]
时,strings
中不会只有一堆随机字符吗?
关于c++ - 计算字符数组中一行中的字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9371901/