2015-09-20 3 views
-3

У меня есть следующий код:печать номер как номер в строковом типе

string a = "wwwwaaadexxxxxx"; 

Предназначенного Выход: «w4a3d1e1x6»;

где-то в моем коде я имею int count = 1; ... count++;

Кроме того, где-то в моем коде я должен напечатать этот счет, как a[i] но, как только число .. как 1,2,3 и не символ эквивалент 1, 2,3.

Я пытаюсь следующее:

stringstream ss; 
ss << 100 

Что такое правильный способ сделать это в CPP: printf("%c%d",a[i],count);

я тоже что-то вроде чтения?

EDIT:

так я Модифицированный код для добавления номера с индексом I в строке как:

 stringstream newSS; 
     newSS << count; 

      char t = newSS.str().at(0); 

      a[i] = t; 
+2

Я не уверен, что понимаю. Учитывая ваш пример 'string a', вы можете показать фактический результат, который хотите произвести, а не смутное словесное описание? –

+0

Конечно! .. Редактирование сообщения –

+0

Я подсчитываю количество символов, а затем добавляю их в строку. Я раньше использовал char a [] .. но люди здесь предложили использовать строковый тип вместо C++; –

ответ

1

Вы можете использовать stringstream для конкатенации строки и счетчик,

stringstream newSS; 
newSS << a[i] << count; 

, а затем, наконец, преобразовать его в строку, а затем распечатать или вернуть (если это делается внутри функции)

string output = newSS.str(); 
cout << output << endl; 

Но если ваша цель заключается в том, чтобы печатать выходные данные, то использование printf в порядке.

Если вам необходимо обновить на месте, вы можете использовать два указателя. Пусть они будут i, j.
Вы используете j для установки нового значения, а i - подсчета. Это стандартная проблема кодирования runLength.

+0

Конечная цель - напечатать конечный результат как одну строку. Я буду содержать итоговый результат в строке temp, а затем cout. –

+0

может у вас объяснить, что здесь происходит? –

+0

Если мне нужно сделать обновление на месте? Предположим, я хочу [i] = count, а затем повторно использовать этот «а»? –

-1

Нет «правильного» способа. Вы можете использовать snprintf, stringstream и т. Д. Или вы можете катить свой алгоритм. Предполагая, что это базовый номер 10, вы хотите номер в базе 10.

#include <iostream> 
#include <string> 
#include <algorithm> 

int main(void) 
{ 
    int a = 1194; 
    int rem = 0; 
    std::string output; 

    do { 
     rem = a % 10; 
     a = a/10; 
     output.append(1, rem + '0'); 
    } while(a != 0); 

    std::reverse(output.begin(), output.end()); 
    std::cout << output << std::endl; 

    return 0; 
} 
+1

Возможно, это не то, о чем попросил ОП. – Zereges

+0

Непонятно, что спрашивает ОП. –

+0

: D .. после всех объяснений .. я не слишком уверен, что еще я могу добавить .. –

Смежные вопросы