我必须将一个字符串分割成几个。实际上,我需要的是解析例如以下格式(i9,i9,i2)的文件中的某些输入。

i9表示十进制数字,如下所示:
(5空白)4567

因此,我需要正确检索该数字。宽度始终是固定的,因此每个数字都必须遵守。
该格式的正确实例是

(5空间)4567(6空间)453(1空间)2
要么
(5spaces)4567(6spaces)45322(这里22是i2的参数)

数字前的空白让我头疼,所以我想我可以将每个参数拆分为字符数组,然后将其转换为整数,因为%d说明符会忽略所有空格,并且我不知道如何使用宽度以及忽略空格..(如果可以做到,我的意思是,将所有内容解析为整数,请这么说!)

如果不是,..那么,我将需要帮助将每个字符串解析为子字符串,到目前为止,我已经做到了这一点,但是它不起作用:

while (fgets(buffer, 600, f)) {
    sscanf(buffer, "%9[^\n]s %9[^\n]s %2[^\n]s", arg1, arg2, arg3);
    ....
}

请,任何帮助将不胜感激!

最佳答案

这个答案是C。这就是为什么我使用了变量名new的原因。

使用 strncpy() 并正确终止结果

char part1[10], part2[10], part3[3];
const char *new = "     4567      45322\n"; /* the line read */

strncpy(part1, new, 9);    part1[9] = 0;
strncpy(part2, new+9, 9);  part2[9] = 0;
strncpy(part3, new+18, 2); part3[2] = 0;

我建议您不要尝试编写多语言源文件。

关于c++ - 将一个字符串解析为多个字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9126373/

10-13 07:00
查看更多