C++怎么用字符数组和string打印星号图案

如图
C++怎么用字符数组和string方法打印*️⃣星号图案
怎么写有没有人教教🥲

img

#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;
}
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7689552
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C++之获取string字符串长度的方法
  • 除此之外, 这篇博客: C++中常用的string库中的函数使用方法和总结中的 常用函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 插入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表示,从指针处到末尾;
    
  • 您还可以看一下 王健伟老师的C++语言基础到进阶课程中的 string类型介绍小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    可以使用字符串循环和控制语句来打印星号图案,具体步骤如下:

    1. 定义变量n表示星号的行数,使用for循环遍历每行;
    2. 在每行循环中嵌套一个for循环,遍历每个星号的位置;
    3. 使用字符串或字符数组存储星号图案,每行星号的个数为行数i,使用字符串拼接的方式将星号存入数组;
    4. 打印每行的星号图案。

    具体代码如下:

    #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类型的变量可以自由拼接字符串和字符,可以避免字符数组定义时长度不足导致的问题。