Преобразование строки в ASCII - PullRequest
3 голосов
/ 15 июля 2011

Я просто что-то пробовал и сделал следующий код.Предполагается взять каждую отдельную букву в строке и вывести ее эквивалент ASCII.Однако, когда есть место, оно перестает конвертировать.Вот код:

#include <iostream>
#include <string>
using namespace std;

void convertToASCII(string letter)
{
    for (int i = 0; i < letter.length(); i++)
    {
        char x = letter.at(i);
        cout << int(x) << endl;
    }
}

int main()
{
    string plainText;
    cout << "Enter text to convert to ASCII: ";
    cin >> plainText;
    convertToASCII(plainText);
    return 0;
}

Есть идеи, почему это происходит?

Ответы [ 5 ]

10 голосов
/ 15 июля 2011

cin >> plainText читает от ввода до, но исключая, первый символ пробела.Вы, вероятно, хотите std::getline(cin, plainText) вместо.

Ссылки:

2 голосов
/ 15 июля 2011

Форматированная функция ввода operator>> on istream останавливает извлечение из потока, если оно попадает в пробел. Таким образом, ваша строка не содержит остальную часть ввода.

Если вы хотите прочитать до конца строки, используйте getline вместо:

string plainText;
cout << "Enter text to convert to ASCII: ";
getline(cin, plainText);
convertToASCII(plainText);
0 голосов
/ 21 мая 2019

Вот кое-что, что я собрал. Я использовал вектор для хранения всех значений ASCII, которые должны быть сгенерированы. Сначала мы просим пользователя о строке. Затем мы используем приведение типов и добавляем значения в вектор. Мы также используем цикл while, чтобы пользователь ничего не вводил.

# include <iostream>
# include <string>
# include <vector>

std::vector<int> converttoASCII (std::string s)  //used a vector to store all our ASCII values
{
    std::vector <int> vals;  //vectpr creation
    int ascChar;
    for (int i = 0; i < s.length(); i++)  //We interate through string passed and add to vectors
    {
        ascChar = s[i];
        vals.push_back(ascChar);
    }
    return vals;
}


int main()
{
    std::string toencode;
    std::cout << "Please enter in a string to encode: ";
    std::getline(std::cin, toencode);
    while (toencode.length() == 0)  //we used a for loop to prevent user from entering nothing.
    {
        std::cin.clear();
        std::cout << "Must not be empty! Try Again.\n";
        std::cout << "Please enter in a string to encode: ";
        std::getline(std::cin, toencode);
    }
    std::vector <int> asciivals = converttoASCII(toencode);
    for (int i : asciivals)  //Print out the results of the vector
    {
        std::cout << i << "\n";
    }
    return 0;
}

Ссылки:

введите описание ссылки здесь

введите описание ссылки здесь

введите описание ссылки здесь

0 голосов
/ 17 марта 2018

Просто используйте getline, и тогда вам не понадобятся такие вещи, вы можете просто ввести команду int в строковую букву, чтобы непосредственно преобразовать ее в ascii. Вот мой код.

#include <iostream>
#include <string>
using namespace std;

void convertToASCII(string s)
{
    for (int i = 0; i < s.length(); i++)
    {
        cout << (int)s[i]<< endl;
    }
}

int main()
{
    string plainText;
    cout << "Enter text to convert to ASCII: ";
    getline(cin,plainText);
    convertToASCII(plainText);
    return 0;
}
0 голосов
/ 27 апреля 2017
cin.ignore();
cin.getline(plaintext,100); // 100 (assumed) is the size of plaintext

Используйте эти две строки кода, чтобы принять строку с пробелами.

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