Как найти длину строки в массиве? - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь получить длину строки из массива символов

Мой ввод: alpha kian namikian и вывод должен быть 5 4 8, но на данный момент мой вывод 11 11 11 11 11 11 11 11 11 11 11, что это не то, чего я пытаюсь достичь.

int i,count;
char str[100];  
cout<<"enter string\n";
for(i=0;;i++)
{
    cin>>str[i];

    if(cin.get()=='\n')
    {
        count=i+1;
        break;
    }
}
for(i=0;i<count;i++)
{
    int len = strlen(str);
    cout<<len<<"\n";
}

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

У вас ошибка компиляции, потому что вы пытаетесь разместить массив строк в качестве параметра для strlen. В вашем коде str содержит все строки, поэтому вы должны использовать оператор доступа [], как вы это делали, когда брали строки из стандартного ввода.

int len = strlen(str) становится int len = strlen(str[i]), и это должен исправить ошибку.

РЕДАКТИРОВАТЬ:

Похоже, вы не можете использовать strlen со строками. Вместо этого используйте length().

int len = str[i].length()

РЕДАКТИРОВАТЬ # 2:

Добавление полного кода для справки с выводом:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int i, count;
    string str[100];
    cout << "enter string\n";
    for (i = 0;; i++)
    {
        cin >> str[i];

        if (cin.get() == '\n')
        {
            count = i + 1;
            break;
        }
    }
    for (i = 0; i < count; i++)
    {
        int len = str[i].length();
        cout << len << "\n";
    }
}

Выход:

введите строку

alpha kian namikian

5

4

8

0 голосов
/ 23 февраля 2020

Вы можете использовать этот подход, используя vector тип string и выйти из сохранения строк, если введенная строка равна exit Я использую переменную temp для хранения строки с любым индексом и вывода соответствующей длины.

    int i;
    vector<string> str;
    cout << "Enter String\n";
    while(cin)
    {
        string temp;
        cin >> temp;
        if(temp == "exit")
            break;
        else
            str.push_back(temp);

    }
    int n= str.size();
    for(i = 0; i< n; i++)
    {
        string temp = str[i];
        int len = temp.length();
        cout << len << endl;
    }
...