我正在尝试使用以下代码将长度为 numAttr
的整数数组 attr
转换为字符串,但由制表符 '\t'
分隔.如果 attr[i] = 0
,我只向 attrStr
添加一个制表符 '\t'
,以便该字段为空字符串。如果 attr[i] !=0
,我将整数转换为字符串并添加到 attrStr
。但是在执行 strcat(attrStr,"\t")
时,没有制表符被添加到字符串中。我有什么具体遗漏的吗?我希望我以正确的方式使用 strcat
操作。下面是代码:
char *attrStr = new char[len]; strcpy(attrStr,"");
char *buf = new char[buflen]; strcpy(buf,"");
int i = 0;
for (i=0; i<numAttr-1; i++) {
if (attr[i]!=0) {
itoa(attr[i],buf,10);
strcat(buf,"\t");
strcat(attrStr, buf);
} else {
strcpy(buf,"\t");
strcat(attrStr, buf);
}
}
itoa(attr[i],buf,10); strcat(attrStr, buf);
return attrStr;
最佳答案
使用 std::stringstream
和 std::string
。它们将使您的生活变得简单和轻松。
#include <sstream>
#include <string>
std::stringstream ss;
ss << attr[0];
for (i=1; i<numAttr; i++)
{
if ( attr[i] )
ss << "\t" << attr[i];
else
ss << "\t"; // If attr[i] = 0, add '\t' to the string (as instructed)
}
std::string s = ss.str();
关于c++ - 带有制表符的 strcat 操作不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6131097/