如图
C++怎么用字符数组和string方法打印*️⃣星号图案
怎么写有没有人教教🥲
#include <iostream>
#include <string>
using namespace std;
int main() {
int n = 5;
string s("* * * * *");
for(int i = 0; i < n; i++) {
for(int j = 0; j < i; j++) {
cout << " ";
}
cout << s << endl;
}
return 0;
}
供参考:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s = "* * * * *";
int i, k, n = 5;
for (i = 0; i < n; i++) {
if (i) cout << endl;
k = i;
while (k--) cout << " ";
cout << s;
}
return 0;
}
插入insert()
string s1 = "hello";
s1.insert(1,"ins"); //从s1的1位置开始,插入"ins"字符串,即s1="hinsello";
s1.insert(1, "ins", 2); //从s1的1位置开始,插入"ins"字符串的前2个字符,即s1="hinello";
s1.insert(1, "ins", 1, 2); //从s1的1位置开始,插入"ins"字符串的从1位置开始的2个字符,即s1="hnsello";
insert(iterator it, char c); //在it处插入字符c,返回插入后迭代器的位置
删除erase()
s1. erase(first, last); //删除[first,last)之间的所有字符,返回删除后迭代器的位置
s1.erase(it); //删除it指向的字符,返回删除后迭代器的位置
s1. erase(int pos = 0, int n = npos); //删除pos开始的n个字符,返回修改后的字符串
查找 find()
cout << s.find("aa", 0) << endl; //返回的是子串位置。第二个参数是查找的起始位置,如果找不到,就返回string::npos
if (s.find("aa1", 0) == string::npos)
{
cout << "找不到该子串!" << endl;
}
清空clear()
s1.clear()删除所有元素
判空empty()
s1.empty()如果 s 为空则返回true ,否则为false;
开头 begin()
s1.begin() 返回指向map头部的迭代器
末尾end()
s1.end()返回指向map末尾的迭代器
截取substr().
s.substr( i , length); //从 i 位置截取length长度的字符串 ,不加length表示,从指针处到末尾;
可以使用字符串循环和控制语句来打印星号图案,具体步骤如下:
具体代码如下:
#include<iostream>
#include<string> // 引入string头文件
int main(){
int n = 4; // 星号行数
std::string star; // 定义string类型的star变量存储星号图案
for(int i = 1; i <= n; i++){ // 遍历每行
for(int j = 1; j <= i; j++){ // 遍历每个星号位置
star += "*"; // 将星号拼接入变量star中
}
star += "\n"; // 拼接换行符
}
std::cout << star; // 输出星号图案
return 0;
}
输出结果为:
*
**
***
****
注意:在字符串拼接时要使用string类型的加号运算符,不能直接用“+”符号拼接字符。同时,string类型的变量可以自由拼接字符串和字符,可以避免字符数组定义时长度不足导致的问题。