C++ 字符串类

学习C++ – C++字符串类

C++有一个字符串类。

您可以使用类型字符串变量。

要使用字符串类,程序必须包括字符串头文件。

字符串类是std命名空间的一部分。

该类可以让您将字符串视为普通变量。

例子

以下代码说明了字符串对象和字符数组之间的一些相似之处和差异。


#include <iostream> 
#include <string>               // make string class available 
using namespace std; 
int main() { 
    char my_char1[20];            // create an empty array 
    char my_char2[20] = "C++"; // create an initialized array 
    string str1;                // create an empty string object 
    string str2 = "Java";    // create an initialized string 

    cout << "Enter a string: "; 
    cin >> my_char1; 
    cout << "Enter another string: "; 
    cin >> str1;                // use cin for input 
    cout << my_char1 << " " << my_char2 << " " 
          << str1 << " " << str2 // use cout for output 
          << endl; 
    cout << "The third letter in " << my_char2 << " is " 
          << my_char2[2] << endl; 
    cout << "The third letter in " << str2 << " is " 
          << str2[2] << endl;    // use array notation 

    return 0; 
} 

上面的代码生成以下结果。

例2

以下代码显示了一些String用法。

请注意,您可以将C风格的字符串以及字符串对象添加到字符串对象。


#include <iostream> 
#include <string>               // make string class available 
using namespace std; 
int main() { 
    string s1 = "www.w3cschool.cn"; 
    string s2, s3; 

    cout << "You can assign one string object to another: s2 = s1\n"; 
    s2 = s1; 
    cout << "s1: " << s1 << ", s2: " << s2 << endl; 
    cout << "You can assign a C-style string to a string object.\n"; 
    cout << "s2 = \"new Value\"\n"; 
    s2 = "C++"; 
    cout << "s2: " << s2 << endl; 
    cout << "You can concatenate strings: s3 = s1 + s2\n"; 
    s3 = s1 + s2; 
    cout << "s3: " << s3 << endl; 
    cout << "You can append strings.\n"; 
    s1 += s2; 
    cout <<"s1 += s2 yields s1 = " << s1 << endl; 
    s2 += " for a day"; 
    cout <<"s2 += \" for a day\" yields s2 = " << s2 << endl; 

    return 0; 
} 

上面的代码生成以下结果。

例3

C库相当于

str3 = str1 + str2;

这是:

strcpy(my_char3, my_char1); 
strcat(my_char3, my_char2); 

以下代码将使用字符串对象的技术与使用字符数组的技术进行比较。


#include <iostream> 
#include <string>               // make string class available 
#include <cstring>              // C-style string library 
using namespace std; 
int main() { 
     char my_char1[20]; 
     char my_char2[20] = "www.w3cschool.cn"; 
     string str1; 
     string str2 = "C++"; 

     str1 = str2;                // copy str2 to str1 
     strcpy(my_char1, my_char2); // copy my_char2 to my_char1 

     str1 += " vs ";              // add to the end of str1 
     strcat(my_char1, " Java");   // add to the end of my_char1 

     int len1 = str1.size();     // obtain length of str1 
     int len2 = strlen(my_char1);// obtain length of my_char1 

     cout << "The string " << str1 << " contains " 
           << len1 << " characters.\n"; 
     cout << "The string " << my_char1 << " contains " 
           << len2 << " characters.\n"; 

     return 0; 
}

上面的代码生成以下结果。

字符串类I/O

您可以使用cin与>>操作符来读取一个字符串对象,并使用<<操作符来显示一个使用与C风格字符串相同的语法的字符串对象。

一次读取一行而不是一个字使用不同的语法。


#include <iostream> 
#include <string>               // make string class available 
#include <cstring>              // C-style string library 
using namespace std; 
int main() { 
     char my_char[20]; 
     string str; 

     cout << "Length of string: " 
          << strlen(my_char) << endl; 
     cout << "Length of string in str before input: " 
          << str.size() << endl; 
     cout << "Enter a line of text:\n"; 
     cin.getline(my_char, 20);     // indicate maximum length 
     cout << "You entered: " << my_char << endl; 
     cout << "Enter another line of text:\n"; 
     getline(cin, str);          // cin now an argument; no length specifier 
     cout << "You entered: " << str << endl; 
     cout << "Length of string in my_char after input: " 
          << strlen(my_char) << endl; 
     cout << "Length of string in str after input: " 
          << str.size() << endl; 
     return 0; 
}

上面的代码生成以下结果。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《C++ 字符串类》
文章链接:https://zhuji.vsping.com/329269.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。