Bir dizi indeksi% x ilə çap edə bilərəmsə, necə bir dize saxlaya bilərəm?

Mən miras qalan kodda, əvvəlki printf programcısının% x istifadə edərək, bir sıra indeksi olduğunu görürəm. Bununla belə, əgər simvolun simvoluna eyni array indeksini əlavə etmək üçün cəhd edərsənsə += simli simvollarla bitər.

Xəttin xəttindən sonuna qədər əldə edilə bilən bir dəyişən əlavə etmək üçün necə?

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

Bu çıxış kodu kimi görünür.

Amma cəhd edərsən:

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

O, qəribə bir xarakter əlavə edir.

-20
09 янв. 09 yanvarda Doug Smith tərəfindən təyin olundu 2014-01-09 21:50 '14 da 21:50 2014-01-09 21:50
@ 3 cavab

Bir seçiminiz var. printf kimi işləyən sprintf və ya onun əmiuşağılarından istifadə edə bilərsiniz və ya std::ostringstream istifadə edə bilərsiniz.

snprintf nümunəsi

 #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
09 янв. Cavab Kapitan Obvlious Jan 09 tərəfindən verilir 2014-01-09 21:57 '14 da 21:57 2014-01-09 21:57

Sizin sələfiniz "dizi indeksi" nı çap etməmişdi, nə də sən yox. i indeksi; array[i] bu indeksin elementidir.

Bu şeylərin hansı növləri olduğunu söyləyirdiniz, amma bu bir göstərici (proqramınız tərtib edildiyini və sələfinizin printf çağırışında altıncı xətt kimi çıxış etməyə qərar verdiyini təxmin etdiyini) printf , probleminiz bu göstəricinin insan oxunaqlı bir nümayəndəliyi ilə deyil, bir göstərici ilə strings birləşdirmək üçün çalışırıq.

İndi standart kütüphanedeki C ++ I / O axınları sizin üçün etdiyiniz leksik dəyişikliklərə daxil edilir.

border=0
  // Output like: 0xDEADBEEF void* somePtr = foo(); printf("%x\n", somePtr);  // invalid unless somePtr is a valid C-string really std::string str1 = somePtr;  // Does the translation to human-readableness for us std::cout << std::hex << somePtr << '\n';  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(); 

Sizə daha çox kömək etmək üçün istifadə vəziyyətinizi daha çox bilmək lazımdır.

0
09 янв. cavab Orbitdə Yüngüllük Yarışlarına verildi 09 Yanvar 2014-01-09 21:59 '14 at 9:59 pm 2014-01-09 21:59

String :: std :: string etmək üçün d string:

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

Əlavə etmək üçün:

 cppstr.append(cstr, cstr+strlen(cstr)); 
0
09 янв. cavab Ezra 09 yanvar verilir . 2014-01-09 22:10 '14 saat 10:10 'da 2014-01-09 22:10

bağlı digər suallar və ya sual