如果有意义的话。
到目前为止,这是它的样子。
#include <iostream>
int main()
{
char *buffer;
buffer = new char[100];
std::cin >> buffer;
const int size = strlen(buffer);
char input[size];
delete buffer;
return 0;
}
我知道我可以使用字符串库,但我试图不使用它。
我想根据输入的大小来设置char大小(在代码char输入中)。
我得到的错误是
expression did not evaluate to a constant
expression must have a constant value
在第12行,即
char input[size];
答案 0 :(得分:0)
我知道我可以使用字符串库,但我试图不使用它。
您可以使用std::vector<char>
。如果这也不是一个选项,请自己分配内存并确保释放内存。
char* input = new char[size+1]; // Add an extra for the terminating null characterr
....
delete [] input;
答案 1 :(得分:0)
如果它是您尝试为size
数组分配给input
的缓冲区数组中已用空间的长度,则可以使用两种方法...
#include <iostream>
using namespace std;
int main()
{
char *buffer = new char[100];
cin >> buffer;
int spaceUsed = 0;
for (unsigned int i = 0; i < 100; i++)
{
if (buffer[i] != '\0')
spaceUsed++;
}
char input[spaceUsed];
delete [] buffer;
return 0;
}
... OR
#include <iostream>
using namespace std;
int main()
{
char *buffer = new char[100];
cin >> buffer;
int spaceUsed = 0;
while (*buffer++)
spaceUsed++;
char input[spaceUsed];
delete [] buffer;
return 0;
}
两个代码段都完全相同。当然,使用string
库会让你的生活更轻松。
答案 2 :(得分:0)
对于std::cin
,您需要预先分配缓冲区。如果你打算使用char[]
并且你真的必须避免字符串,你必须确保分配足够的内存。
或者,您可以使用scanf("%c",&newChar)
读取char,直到用户输入转义字符并为数组分配内存。
我不认为您仅限于使用iostream
?