C/C++

Какой самый простой способ привести std::string в код ASCII?

Erbol Abil
Erbol Abil
243
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<int> ascii(const string& line) {
vector<int> box;
for (const auto code : line) box.push_back(code);
return box;
}
int main() {
string hello = "Hello world!";
auto box = ascii(hello);
for (const auto code : box) cout << "0x" << hex << code << ' ';
system("pause > nul");
}
Purple Guy
Purple Guy
93 601
Лучший ответ
Если речь о С++, то можно воспользоваться функцией c_str, которая преобразует строку в массив символов ( на самом деле даже не преобразует, а возвращает ее внутреннее представление ), а данный массив можно считать набором кодов
Иван Булгаков Для строки перегружен оператор [ ], поэтому строка сама по себе является подобием массива.
std::string - это может быть несколько символов, ещё может быть ноль символов (пустая строка).
Код символа - это код одного символа.
Как быть?
Erbol Abil а если привести сначала в char*, а потом поэлементно преобразовывать?
#include < iostream >
#include < string >
#include < vector >

using namespace std;

int main ()
{
std::string str = "12345 hello world";
std::vector < unsigned int >ascii_codes;
unsigned int sum_codes = 0;

cout << str << "\n";

for (int i = 0; i < str.length (); i++)
{
ascii_codes.push_back ((unsigned int) str[i]);
}

cout << "ascii char codes \n";
for ( unsigned int n : ascii_codes)
{
sum_codes += n;
std::cout << n << ", ";
}

cout << "\n sum codes " << sum_codes << "\n";

return 0;
}