C++ 如何在c++;不使用std::string,也不使用任何STL?

C++ 如何在c++;不使用std::string,也不使用任何STL?,c++,C++,我希望从用户(比如5和6)处获取2个整数作为输入,并需要将其存储为复数,即字符数组中的5+i6。条件是我不能使用string和ccomplex库 我不想打印它,因为我不想做这样的事情: char x= 5+'/0'; char y= 6+'/0'; cout<< x << " i"<<y; 如果不能使用string,那么我想就不能使用std::stringstream。所以回退到snprintf(buf,sizeof buf,“%d+i%d”,5,6) 不能

我希望从用户(比如5和6)处获取2个整数作为输入,并需要将其存储为复数,即字符数组中的5+i6。条件是我不能使用string和ccomplex库

我不想打印它,因为我不想做这样的事情:

char x= 5+'/0';
char y= 6+'/0';
cout<< x << " i"<<y;

如果不能使用string,那么我想就不能使用std::stringstream。所以回退到snprintf(buf,sizeof buf,“%d+i%d”,5,6)

不能使用std::string。所以问题是为什么,以及设置问题的人希望字符串数据如何传递?不允许std::strings是完全合理的,但您是否有自己的类,是否使用调用方提供的具有固定缓冲区的C字符串,或者是否传递分配给malloc()的C字符串。还有其他可能的替代方案

如果你有自己的字符串类,我们不能不看就回答。填充调用方提供的C缓冲区

/* return 0 on success, -1 if buffer too small */
int toString(char *buff, int N, int real, int imaginary)
{
   int sz = snprintf(buff, N, "%d + %di", real, iamginary);
   if(sz > N-1)
     return -1;
   return 0;
}
传递分配给malloc的字符串

/* return a string allocated with malloc */
char *toString(int real, int imaginary)
{
   int sz;
   char *answer = 0;
   const char *fmt = "%d + %di";

   sz = snprintf(0, 0, fmt, real, imaginary);
   answer = malloc(sz + 1);
   if(answer)
     snprintf("answer, sz+1, fmt, real, imaginary); 

   return answer;   
}

您可以创建自己的类并使用它吗?是的,我可以这样做。然后您可以创建一个将值存储为成员数据的类,并从中构造一个数组。或者只是读入整数,然后从中构造一个数组。我实际上打算这样做,但很难从data membersAh构造一个数组。您是否可以使用标准库的成员,只要他们不是标准模板库的一部分?因为如果你是的话,
snprintf()
就是你想要的,就像Benoît在回答中说的那样。它不打印到标准输出,而是打印到第一个参数,即
char*
(包括
char
数组)。谢谢!非常简单,一旦你知道像这样的存在感谢详细的解释!
/* return a string allocated with malloc */
char *toString(int real, int imaginary)
{
   int sz;
   char *answer = 0;
   const char *fmt = "%d + %di";

   sz = snprintf(0, 0, fmt, real, imaginary);
   answer = malloc(sz + 1);
   if(answer)
     snprintf("answer, sz+1, fmt, real, imaginary); 

   return answer;   
}