Как сделать массив символов того же размера, что и вход (или это можно сделать с помощью строки lib, а не строк массива в стиле C)? - PullRequest
0 голосов
/ 21 февраля 2012

Итак, я не совсем новичок в C ++, но я с волнением перебрал все учебные пособия, и теперь я возвращаюсь и на самом деле пытаюсь применить свои знания и развить их.Я работал над небольшим алгоритмом шифрования;ничего особенного, только ввод, шифрование и вывод в окно командной строки.

Проблема в том, что я создаю массив char, скажем, из 9 переменных.Затем я использую cin.getline (array, 8), чтобы получить пользовательский ввод до 8 символов.Хорошо, если я введу ровно 8. Но если я введу меньше, то в конце введенного слова будут случайные символы.

Итак, мне было интересно, есть ли способ создать массивточный размер введенных символов?Или, что еще лучше, я мог бы создать алгоритм шифрования, используя библиотеку строк C ++?Я не уверен, как изменить отдельный символ строки C ++, не преобразовав его в массив символов, так что я почти вернулся к тому, с чего начал.

Я знаю, что это, вероятно, глупый вопрос, но я уже дважды вернулся к основам после того, как спешил со всем, что я не понимал, поэтому я действительно хочу убедиться, что знаю все на этот раз.

Любая помощь очень ценится:)

Ответы [ 3 ]

1 голос
/ 21 февраля 2012
#include <iostream>

int main()
{
    std::cout << "Enter Password: ";

    std::string password;
    std::cin >> password;

    for (int i = 0; i < password.length(); ++i)
    {
        // a std::string can be accessed like a c-style array
        std::cout << "password[" << i << "] = " << password[i] << std::endl;
    }
}
0 голосов
/ 21 февраля 2012

Вы можете позвонить cin.gcount(), чтобы получить фактическое количество символов, считанных в ваш массив.

см. http://www.cplusplus.com/reference/iostream/istream/gcount/

0 голосов
/ 21 февраля 2012

Мое предложение состояло бы в том, чтобы оставить все как есть; но убедитесь, что когда вы используете символы в вашем массиве, вы останавливаетесь, когда вы достигаете конечного нуля. Таким образом, ваш алгоритм шифрования (или что-то еще, что вы пишете) должен проверять на ноль каждый раз, когда он читает символ из массива. Это довольно стандартный способ работы с символьными данными в C или C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...