【发布时间】:2020-09-01 01:33:59
【问题描述】:
我正在尝试在我的以下代码中创建一个特定的问题案例;
std::string id = "123456789123456789" // it can be different sized string too.
std::string my_id = "TEST_" + id;
char* temp_my_id = (char *) my_id.c_str();
strcpy(temp_my_id, my_id.c_str());
PRINT("my_id value : ", temp_my_id);
这是我项目中的遗留代码,我怀疑 temp_my_id 返回非 ascii 字符。这可能吗?
【问题讨论】:
-
你能解释一下问题是什么,你想在这里做什么?您正在将字符串的内容复制到自身?为什么以及实际问题是什么?
-
来自docs for
strcpy“字符串不能重叠” -
另外,你正在抛弃 const-ness。对于所有这些实际问题,我认为我们不需要考虑关于“非 ASCII”字符的假设问题。
-
在
strcpy(temp_my_id, my_id.c_str())temp_my_id和my_id.c_str()指向同一个内存缓冲区。正如@Ackdari 所说,这是一个错误。 -
其实没有问题。这是关于一个问题的可能性。我想知道如果我不对代码进行任何修改,它是否可以返回非 ascii 字符。
标签: c++