标签: itoa

gcc错误:对'itoa'的未定义引用

如果我包含stdlib.h,那么也无法识别itoa().我的代码:

%{
#include "stdlib.h"
#include <stdio.h>
#include <math.h>
int yylex(void);
char p[10]="t",n1[10];
int n ='0';

%}
%union
{
char *dval;
}
%token ID
%left '+' '-'
%left '*' '/'
%nonassoc UMINUS
%type <dval> S
%type <dval> E
%%
S : ID '=' E {printf(" x = %sn",$$);}
;
E : ID {}
| E '+' E {n++;itoa(n,n1,10);printf(" %s = %s + %s ",p,$1,$3);strcpy($$,p);strcat($$,n1);}
| E '-' E {n++;itoa(n,n1,10);printf(" %s = %s – %s ",p,$1,$3);strcpy($$,p);strcat($$,n1);}
| E '*' E {n++;itoa(n,n1,10);printf(" %s …
Run Code Online (Sandbox Code Playgroud)

gcc itoa

8
推荐指数
2
解决办法
5万
查看次数

使用数字作为大小创建整数的char数组

我试图在C中创建一个char数组,用int的数字填充它,但int可以是任意数量的数字.

我正在使用一个名为的创建函数getDigits(int num),它返回int所具有的多个数字.

char buffer[getDigits(number)] = "";
snprintf(buffer, sizeof(buffer),"%d",number);
Run Code Online (Sandbox Code Playgroud)

但是当我使用gcc编译时,它返回:

error: variable-sized object may not be initialized

我已经尝试了一切.当我宣布它时char fileSizeStr[5] = "";,它是有效的.当我尝试动态声明缓冲区大小时,我可以看到问题正在上升,但我真的想知道是否是实现此目的的一种方法.

c arrays printf digits itoa

7
推荐指数
2
解决办法
1942
查看次数

在Qt中没有分配的情况下将(多个!)数字转换为字符串的正确方法

TL;博士

我想QString::number(int)每秒多次打电话.它非常慢:似乎每次都分配一个新的字符串.尝试使用setNum相同的字符串代替,仍然没有喜悦.


原来的长问题:

问题

我有一大堆数字(比如整数),我想将它们格式化为文本,然后(可能不会立即)写入文件.天真的方式看起来像这样大约1:

QString allData;
foreach(const int & value, values) {
    allData += QString::number(value);
    allData += '\n';
}
Run Code Online (Sandbox Code Playgroud)

我机器上的150000整数需要大约280ms,这对我来说似乎很重要.我想这是因为被调用150000次并且每次都分配新的字符串.当我尝试使用(不分配内存)时,这被证实是问题的根源.QString::numberitoa

可能,但不是Qt [not-cute]解决方案

QString allData;
char buffer[100];                               // <-------
foreach(const int & value, values) {
    _itoa_s(value, buffer, sizeof(buffer), 10); // <-------
    allData += buffer;
    allData += '\n';
}
Run Code Online (Sandbox Code Playgroud)

对于相同的150000个整数(大约快4倍),这需要大约70ms,这对我来说是现在可以接受的(我想我也可以使用字符串连接做一些事情,但是让我们把它留在这个问题之外)

我不喜欢我必须使用一些不标准的,可能已被弃用的,可能是不可移植的2功能(并不是说这看起来很难看).

然后我记得还有一个实例方法:QString::setNum.我希望我可以使用与以下相同的模式itoa:只分配一个字符串并每次修改它. …

c++ performance qstring qt itoa

7
推荐指数
1
解决办法
1206
查看次数

如何将一个整数转换为一个可移植的字符串?

我一直在寻找一种以可移植的方式将整数转换为字符串的方法(至少在Windows和Linux以及x86和x86_64之间可移植),我虽然itoa(X)是标准的atoi(1).

但我在维基百科条目中阅读了以下内容:

itoa函数是标准C编程语言的广泛非标准扩展.它不能被轻易使用,因为它没有在任何C语言标准中定义; 但是,编译器通常在处于非符合模式时通过头提供它,因为它是标准库函数atoi的逻辑对应物.

所以我想知道是否有任何方法可以以便携方式进行.如果我必须编写自己的函数,我必须小心哪些事情?

c portability itoa

6
推荐指数
1
解决办法
4195
查看次数

将无符号 int 转换为 char 数组。伊托亚的替代品?

我有一个关于无符号整数的问题。我想将 unsigned int 转换为 char 数组。为此,我使用 itoa。问题是 itoa 可以正常处理 int,但不能处理 unsigned int(unsigned int 被视为普通 int)。我应该如何将 unsigned int 转换为 char 数组?

预先感谢您的帮助!

c++ arrays char itoa unsigned-integer

5
推荐指数
1
解决办法
1万
查看次数

ANSI C,整数到字符串没有可变参数函数

我目前正在使用支持ANSI C的PLC,但使用自己的GNU编译器,它不会编译任何可变函数和itoa之类的东西.所以使用sprintf&co.不是将整数转换为字符串的选项.任何人都可以引导我到一个网站,其中列出了强大的,无sprintf的itoa实现或在此发布合适的算法?提前致谢.

c string integer itoa

4
推荐指数
1
解决办法
2353
查看次数

'itoa':此项目的POSIX名称已弃用

我正在尝试通过执行以下操作将an int转换为string

int id = 12689;
char snum[MAX];
itoa(id, snum, 10);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

'itoa':不建议使用此项目的POSIX名称。而是使用符合ISO C和C ++的名称:_itoa。

c itoa

4
推荐指数
2
解决办法
7204
查看次数

在标准C中将int转换为char*(不使用itoa)

我已经声明并初始化了两个变量,如下所示:

int a=5;
char* str;
str = (char*)calloc(255, sizeof(char));
Run Code Online (Sandbox Code Playgroud)

我想在标准C中将int转换为char*.我不能使用C++中的任何转换函数,例如itoa.

我正在使用Ubuntu 11.10

c int char itoa

3
推荐指数
1
解决办法
2万
查看次数

在C/C++中使用itoa将整数转换为二进制字符串

我可以itoa()用于将long long int转换为二进制字符串吗?我已经看到了使用int转换为二进制的各种示例itoa.如果我使用long long int,是否存在溢出或可能丢失精度的风险.

编辑 - 感谢大家的回复.我实现了我想做的事情.itoa()不够用,因为它不支持long long int.Moreover我不能在gcc中使用itoa(),因为它不是标准的库函数.

c c++ itoa

3
推荐指数
1
解决办法
1万
查看次数

我可以为后续的itoa()调用重用相同的缓冲区吗?

我想知道这是否安全/认可用法:

char pBuf[10];
itoa(iInt, pBuf, 10);
// pBuf value gets copied elsewhere

//memset(pBuf, 0, sizeof(pBuf)); // Is this necessary?
itoa(iInt2, pBuf, 10);
// pBuf value gets copied elsewhere
Run Code Online (Sandbox Code Playgroud)

我可以重用这样的缓冲区吗?

c++ buffer itoa

3
推荐指数
1
解决办法
173
查看次数

标签 统计

itoa ×10

c ×6

c++ ×4

arrays ×2

char ×2

buffer ×1

digits ×1

gcc ×1

int ×1

integer ×1

performance ×1

portability ×1

printf ×1

qstring ×1

qt ×1

string ×1

unsigned-integer ×1