文章目錄
- 連接兩個字符串字面常量
- 題目
- 注意
- 代碼
- 輸出結果
- 處理輸入的變長字符串
- 題目
- 注意
- 代碼
連接兩個字符串字面常量
題目
連接兩個字符串字面常量,將結果保存在一個動態分配的char數組中。重寫,連接兩個標準庫string對象。
注意
使用頭文件cstring的strcpy拷貝字符串、strcat連接字符串。注意釋放動態數組。
代碼
#include <iostream>
#include <string>
#include <cstring>
using namespace std;int main(int argc, char const *argv[]) {const char *c1 = "hello ";const char *c2 = "world";char *r1 = new char[strlen(c1) + strlen(c2) + 1];strcpy(r1, c1);strcat(r1, c2);cout << r1 << endl;delete [] r1;char *r2 = new char[strlen(c1) + strlen(c2) + 1];string s1 = "hello ";string s2 = "world";strcpy(r2, (s1+s2).c_str());cout << r2 << endl;delete [] r2;return 0;
}
輸出結果
處理輸入的變長字符串
題目
從標準輸入讀取一個字符串,存入一個動態分配的字符數組中。描述你的程序如何處理變長輸入。測試你的程序,輸入一個超出你分配的數組長度的字符串。
注意
動態數組的大小是程序員設定的。因此有可能出現輸入的字符串長度大于動態數組的長度,此時需要截斷讀取操作(也選擇可以拋出異常等操作)。為了能讀取空白符,采用get來讀取字符。(可以在程序中選擇遇到空白符截斷讀取)
代碼
#include <iostream>
#include <string>
#include <cstring>
using namespace std;int main(int argc, char const *argv[]) {char *r = new char[20]; // 最多存放19個字符+一個結束符int l = 0;char c;while (cin.get(c)) {if(isspace(c)) // 空格符、制表符等空白符break;r[l++] = c;if(l == 20){cout << "達到數組容量上限" << endl;break;}}r[l] = 0;cout << r << endl;delete [] r;return 0;
}