Если я могу напечатать индекс массива с% x, как мне сохранить его в строку?

Я вижу в коде, который я унаследовал, что предыдущий программист printfs индекс массива, используя% x. Однако, если я просто попытаюсь добавить тот же индекс массива в строку с += строка заканчивается тем, что является связкой символов.

Как добавить переменную, к которой можно получить доступ с помощью% x, в конец строки?

printf("%x", array[i]);

Вот как выглядит код вывода.

Но если я попробую:

string s = "";
s += array[0];

Это просто добавляет странный символ.

-20

Решение

У вас есть пара вариантов. Ты можешь использовать sprintf или один из его кузенов, которые работают как printf или же ты можешь использовать std::ostringstream,

snprintf пример

#include <cstdio>

char buffer[100] = "some text already there ";
std::snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "%x", index);

.

std::ostringstream пример

#include <sstream>

std::string text("some already existing text ");
std::ostringstream buffer;
buffer << std::hex << index;
text += buffer.str();
2

Другие решения

Ваш предшественник был не печатать «индекс массива», и вы тоже. i это индекс; array[i] является элементом в этом индексе.

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

Теперь потоки ввода / вывода C ++ в стандартной библиотеке имеют встроенные лексические преобразования, которые делают это для вас.

/** Example 1 */
// Output like: 0xDEADBEEF
void* somePtr = foo();
printf("%x\n", somePtr);

/** Example 2 */
// invalid unless somePtr is a valid C-string really
std::string str1 = somePtr;

/** Example 3 */
// Does the translation to human-readableness for us
std::cout << std::hex << somePtr << '\n';

/** Example 4 */
std::stringstream ss;

// Does the translation to human-readableness for us
ss << somePtr;

// Now get a string back out of it
std::string str2 = ss.str();

Нам нужно больше узнать о вашем сценарии использования, чтобы помочь вам в дальнейшем.

0

Чтобы преобразовать строку c в std :: string, выполните:

#define LENGTH 100
char cstr[LENGTH] = "something";
std::string cppstr(cstr, cstr+strlen(cstr));

Чтобы добавить:

cppstr.append(cstr, cstr+strlen(cstr));
-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector