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

时间:2013-03-22 17:36:19

标签: c++

这个程序应该向控制台输出一个我输入的字母串,例如,如果我输入“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;
 }

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

1 个答案:

答案 0 :(得分: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字符将其拆分为不同的行。