【发布时间】:2019-08-13 17:22:43
【问题描述】:
如何在 C++ 中将字符串转换为具有固定位置数的 int 和 char? 例如:我需要将“A1920139”转换为字符“A”、int 192(字符串中的后三个位置)、int 01(后两个位置)和 int 39(最后两个位置)。
到目前为止,我只设法自己获取每个 int(1、9、2、0 等)。我不知道如何获取 char 或为 int 定义固定数量的位置。这是我设法写的:
string userstr;
int* myarray = new int[sizeof(userstr)];
userstr = "A1920139";
for (i = 1; i < userstr.size(); i++) {
myarray[i] = userstr[i] - '0';
}
for (i = 1; i < userstr.size(); i++) {
printf("Number %d: %d\n", i, myarray[i]);
}
最终我需要达到char="A"、int_1=192、int_2=01 和 int_3=39 之类的东西
【问题讨论】:
-
int* myarray = new int[sizeof(userstr)];- 为什么手动内存管理 (new) 而不是使用容器或(至少)智能指针? -
stackoverflow.com/questions/12119645/… 的重复我无法关闭,因为我已经不小心关闭了错误的链接。这是关于
new int[sizeof(userstr)];。但由于 OP 后来使用了.size(),所以可能只是笔误。 -
不过,第二个问题似乎比这更广泛。 OP 正在尝试将字符串分组为一批数字,并且可能尚未注意到未定义行为的影响。副本仅解决了代码的问题,但不是所要求的。
-
另外注意:即使你改成
int* myarray = new int[userstr.size()];,此时userstr的大小也会为零。它还没有被分配任何东西。 ` -
我的问题如何与链接中的问题重复?我在该链接中没有看到我的问题的答案 - 它仅与获取字符串的大小有关?