如何使字符串在输入字母时输出字母

how to make a string output letters as you type them in

本文关键字:输出 输入 何使 字符串      更新时间:2023-10-16

这个程序应该输出一串我输入的字母到控制台,例如,如果我输入"im hungry"那么它应该以矩阵的形式输出im hungry到控制台,如果我输入的东西太长那么它会延续到矩阵的下一行

这里是我目前为止的代码:

#include <iostream>
#include <string>
using namespace std;
#define N 6
//
// fill:
//
void fill(string s, int M[][N], int ROWS, int COLS)
{
    int i, r, c;
    s= "x";
    for (i=0, r=0; r < ROWS; r++)
    {
        for (c=0; c < COLS; c++)
        {
             M[r][c] = s[i];  // store ith character into matrix:
             i++; // next character:
             if (i == s.length())  // start-over if that was last char:
             i = 0;
        }
   }
} 
void print(int M[][N], int ROWS, int COLS)
{
  string s;
  s= "x";
  int r, c;
  for(r=0; r< ROWS; r++)
  {
     for(c=0; c < COLS; c++)
     {
       cout<<(char)M[r][c];
     }
 cout <<endl; 
  }
 }
//
// main:
//
int main()
{
    string s;
    getline(cin,s);
    int  M[N][N];
    int  M2[N][N];
    int  row, col, ROWS, COLS;
    fill(s, M, 1, 1);
    print(M, ROWS, COLS);
return 0;
 }

而不是输出我输入的内容,它一直输出随机字符的矩阵(无论我输入什么都一样)任何关于我如何解决这个问题的建议?

如果您真的不需要矩阵,您可以简单地:

void print(string s, int limit, char endl = 'n') {
    if (limit == 0) return;
    if (s.length > limit) {
        for (int i = 0; i < s.length; i++) {
            std::cout << s[i];
            if (i % limit == 0)
                std::cout << endl;
    } else {
        std::cout << s;
    }
}

,它将获取字符串并打印它,如果它低于限制,或者用endl字符将其分成不同的行。