例如,我们说我有以下内容:
char str[] = "33MayPen5";
int length = strlen(str);
char buffer[length];
int j = 0;
for(int i = 0; i < length; i++) {
buffer[j] = // I would like to read the number 33 from str and store it in buffer[0]
j++;
}
基本上,我想将str [0] AND str [1](33)存储到缓冲区[0]中。我将如何完成这项任务?在此先感谢!
答案 0 :(得分:1)
如果我理解正确,你需要一些东西
char str[] = "33MayPen5";
int length = strlen(str);
char *buffer = new char[length];
int j = 0;
for ( int i = 0; i < length && std::isdigit( str[i] ); i++ )
{
buffer[j++] = str[i];
}
或者如果你需要将str中的所有数字存储在缓冲区中,那么循环可以看作
for ( int i = 0; i < length; i++ )
{
if ( std::isdigit( str[i] ) ) buffer[j++] = str[i];
}
当然,如果你使用std :: string而不是动态分配的数组会更好。
在这种情况下,两个示例都显示为
std::string buffer;
buffer.reserve( length );
for ( int i = 0; i < length && std::isdigit( str[i] ); i++ )
{
buffer.push_back( str[i] );
}
和
std::string buffer;
buffer.reserve( length );
for ( int i = 0; i < length; i++ )
{
if ( std::isdigit( str[i] ) ) buffer.push_back( str[i] );
}
编辑:我看到你改变了帖子。
代码看起来像
char str[] = "33MayPen5";
int length = strlen(str);
unsigned char *buffer = new unsigned char[length];
unsigned char c = 0;
for ( int i = 0; i < length && std::isdigit( str[i] ); i++ )
{
c = c * 10 + str[i];
}
buffer[0] = c;
答案 1 :(得分:1)
请提供正确形成的代码,您在此行中出错:
char buffer[length];
你的长度必须是常数。 您可以通过读取每个nomber并将其转换为int来解决此问题。但是没办法一次存储33个。