Peršokti į turinį

String isskaidymas i char masyva


MrMou6

Recommended Posts

Sveiki, tarkim turiu dvimati char masyva ir kelis string kintamuosius. Ar galima pirma masyvo reiksme nustatyt paciam o i antra iskaidyt paraidziau string kintamaji?:

char mas[50][64];
string str;

mas[4] = str // ? :DD Neisivaizduoju kaip tai padaryt


 

Nuoroda į komentarą
Dalintis per kitą puslapį

  • Parašė po 3 savaičių...

Galima naudoti tam tikras funkcijas, kaip buvo minėta aukščiau, bet kai kurios iš jų nėra standartinės. Dėl to, pateikiu kitokį variantą. Šiaip, jeigu čia mokaisi visa tai ne dėl VBE, naudok STL konteinerius, kitas bibliotekas ar pnš.

#include <iostream>
#include <string.h>

using namespace std;

int main(int argc, char* argv[])
{
    string str1{"This is an example string."};
    string str2{"This is NOT an example string."};

    char chr_array1[str1.size() + 1];
    char chr_array2[str2.size() + 1];

    // Užbaigiame string'ą null terminator simboliu.
    strncpy(chr_array1, str1.c_str(), str1.size());
    chr_array1[str1.size()] = '\0';
    strncpy(chr_array2, str2.c_str(), str2.size());
    chr_array2[str2.size()] = '\0';

    // Sukuriame dar vieną masyvą.
    // Jame laikysime rodykles į simbolio tipo reikšmę.
    char* str_array[] = {chr_array1, chr_array2};

    // Čia matome, jog rodyklės yra ekvivalenčios masyvams.
    // Dėl to sintaksė išlieka ta pati.
    str_array[1][29] = '!';

    for (const auto &str : str_array)
    {
        cout << str << '\n';
    }

    return 0;
}

Be to, kam tau skaidyti string'us į simbolių masyvus? Juk galima string'ų pavienius simbolius pasiekti bei modifikuoti:

#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
    string str1{"This is an example string."};
    string str2{"This is NOT an example string."};

    string str_array[] = {str1, str2};

    str_array[1][29] = '!';

    for (const auto &str : str_array)
    {
        cout << str << '\n';
    }

    return 0;
}
Redaguota , nario Tautedorus
Nuoroda į komentarą
Dalintis per kitą puslapį

Svečias
Ši tema yra užrakinta.
  • Å iame puslapyje narÅ¡o:   0 nariai

    • Nėra registruotų narių peržiÅ«rinčių šį forumą.

×
×
  • Sukurti naują...