C++ Tutorial/Data Types/char array

Материал из C\C++ эксперт
Перейти к: навигация, поиск

char array buffers

<source lang="cpp">#include <iostream>

int main()
{
    char buffer[80];
    std::cout << "Enter the string: ";
    std::cin >> buffer;
    std::cout << "Here"s the buffer:  " << buffer << std::endl;
    return 0;
}</source>
Enter the string: string
Here"s the buffer:  string

Copying a string using array notation

<source lang="cpp">#include <iostream> using std::cout; using std::endl; void copy1( char *, const char * ); int main() {

  char string1[ 10 ];
  char *string2 = "Hello";
  copy1( string1, string2 );
  cout << "string1 = " << string1 << endl;
  return 0;

} void copy1( char * s1, const char * s2 ) {

  for ( int i = 0; ( s1[ i ] = s2[ i ] ) != "\0"; i++ )
     ;

}</source>

string1 = Hello

Copying a string using pointer notation

<source lang="cpp">#include <iostream> using std::cout; using std::endl; void copy( char *, const char * ); int main() {

  char string1[ 10 ];
  char string2[] = "Good Bye";
  copy( string1, string2 );
  cout << "string1 = " << string2 << endl;
  return 0;

} void copy( char *s1, const char *s2 ) {

  for ( ; ( *s1 = *s2 ) != "\0"; s1++, s2++ )
     ;

}</source>

string1 = Good Bye

Get line with buffer size for char array reading

<source lang="cpp">#include <iostream>

  1. include <string>

using namespace std; const int kBufferSize = 1024; int main(int argc, char** argv) {

 char buffer[kBufferSize + 1];
 cin.getline(buffer, kBufferSize);
 cout << buffer << endl;
 string myString;
 std::getline(cin, myString);
 cout << myString << endl;

}</source>

initialized string

<source lang="cpp">#include <iostream>

 using namespace std;  
   
 int main(){  
    char str[] = "this is a test";  
    cout << str << endl;  
    return 0;  
 }</source>

Initializing char pointers with strings

<source lang="cpp">#include <iostream> using std::cout; using std::cin; using std::endl; int main() {

 const char* pstar1 = "AAA";
 const char* pstar2 = "BBBB";
 const char* pstar3 = "CCCCC";
 const char* pstar4 = "DDDDDD";
 const char* pstar5 = "EEEEEEE";
 const char* pstar6 = "FFFFFFFF";
 const char* pstr   = "GGGGGGGGG";
 cout << pstar1;
 cout << pstar2;
 cout << pstar3;
 cout << pstar4;
 cout << pstar5;
 cout << pstar6;
 return 0;

}</source>

AAABBBBCCCCCDDDDDDEEEEEEEFFFFFFFF

multidimensional char arrays

<source lang="cpp">#include <iostream> using namespace std; int main() {

   const int ROWS = 3;
   const int COLUMNS = 3;
   char board[ROWS][COLUMNS] = { {"O", "X", "O"},
                                 {" ", "X", "X"},
                                 {"X", "O", "O"} };
   for (int i = 0; i < ROWS; ++i)
   {
       for (int j = 0; j < COLUMNS; ++j)
           cout << board[i][j];
       cout << endl;
   }
   board[1][0] = "X";
   for (int i = 0; i < ROWS; ++i)
   {
        for (int j = 0; j < COLUMNS; ++j)
            cout << board[i][j];
        cout << endl;
   }
   return 0;

}</source>

Read from keyboard and output char array

<source lang="cpp">#include <iostream> using namespace std; int main(void){

  int age;
  float salary;
  char name[128];
  cout << "Enter your first name age salary: ";
  cin >> name >> age >> salary;
  cout << name << " " << age << " " << salary;

}</source>

reads multiple lines, terminates on "$" character

<source lang="cpp">#include <iostream>

 using namespace std;  
   
 const int MAX = 2000;  
 char str[MAX];         
   
 int main(){  
    cout << "\nEnter a string:\n";  
    cin.get(str, MAX, "$");
    cout << "You entered:\n" << str << endl;  
    return 0;  
 }</source>

reads string with embedded blanks

<source lang="cpp">#include <iostream>

 using namespace std;  
   
 int main(){  
    const int MAX = 80;
    char str[MAX]; 
   
    cout << "\nEnter a string: ";  
    cin.get(str, MAX); 
    cout << "You entered: " << str << endl;  
    return 0;  
 }</source>

Reverse a string in place.

<source lang="cpp">#include <iostream>

  1. include <cstring>

using namespace std;

int main() {

 char str[] = "this is a test"; 
 char *start, *end; 
 int len; 
 char t; 

 cout << "Original: " << str << "\n"; 
  
 len = strlen(str); 

 start = str; 
 end = &str[len-1]; 

 while(start < end) { 
   // swap chars 
   t = *start; 
   *start = *end; 
   *end = t; 

   // advance pointers 
   start++; 
   end--; 
 } 


 cout << "Reversed: " << str << "\n"; 
 return 0; 

}</source>

Original: this is a test
Reversed: tset a si siht

Reverse case using array indexing.

<source lang="cpp">#include <iostream>

  1. include <cctype>

using namespace std;

int main() {

 int i; 
 char str[80] = "This Is A Test"; 

 cout << "Original string: " << str << "\n"; 

 for(i = 0; str[i]; i++) { 
   if(isupper(str[i])) 
     str[i] = tolower(str[i]); 
   else if(islower(str[i])) 
     str[i] = toupper(str[i]); 
 } 

 cout << "Inverted-case string: " << str; 

 return 0; 

}</source>

Original string: This Is A Test
Inverted-case string: tHIS iS a tEST

simple string variable

<source lang="cpp">#include <iostream>

 using namespace std;  
   
 int main(){  
    const int MAX = 80;
    char str[MAX];     
   
    cout << "Enter a string: ";  
    cin >> str;        
                       
    cout << "You entered: " << str << endl;  
    return 0;  
 }</source>

Treating character arrays as strings.

<source lang="cpp">#include <iostream> using std::cout; using std::cin; using std::endl; int main() {

  char string1[ 20 ]; 
  char string2[] = "string literal"; 
  cout << "Enter the string: ";
  cin >> string1; 
  cout << "string1 is: " << string1 << "\nstring2 is: " << string2;
   for ( int i = 0; string1[ i ] != "\0"; i++ )
     cout << string1[ i ] << " ";
  cin >> string1; 
  cout << "\nstring1 is: " << string1 << endl;
  return 0; 

}</source>

Enter the string: string
string1 is: string
string2 is: string literals t r i n g
string
string1 is: string

Use cin.get() to read a string based on char array

<source lang="cpp">#include <iostream>

int main()
{
    char buffer[80];
    std::cout << "Enter the string: ";
    std::cin.get(buffer, 79);       // get up to 79 or newline
    std::cout << "Here"s the buffer:  " << buffer << std::endl;
    return 0;
}</source>
Enter the string: string
Here"s the buffer:  string

Using an array of pointers to char

<source lang="cpp">#include <iostream> using std::cout; using std::cin; using std::endl; int main() {

 const char* pstars[] = {"A","BB","CCC","DDDD","EEEEE","FFFFFF"};
 cout << pstars[2];
 cout << endl;
 return 0;

}</source>

CCC