/// Обновленный ответ //
Я думаю, что вы хотите сделать, это вывести каждую строку в массив и вычислить каждую их длину правильно ??? Я написал эту быструю программу, и она отлично работала.
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 символ - это однобитный символ, такой как «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
?
просто набор случайных символов