C++ sscanf 空格分隔字符串

C++ sscanf space delimited string

本文关键字:字符串 分隔 空格 sscanf C++      更新时间:2023-10-16

这是我的练习代码:

int integer_part;
char* string_part = (char*)malloc(sizeof(1000));
char* input_string = (char*)malloc(sizeof(1000)+sizeof(int));
cin>>input_string;
sscanf(input_string, "%s %d", string_part, &integer_part);
printf("scan: %s %d", string_part, integer_part);

我正在使用此代码像abc 2012一样接受输入,但结果将是abc 0

可悲的是,我没有看到问题出在哪里。谁能帮我一点忙?谢谢

这只读取第一个空格分隔的字符串:

cin>>input_string;

使用这种方式:

cin>> string_part >> integer_part;

不要混合使用 C++ 和 C 方式从流中读取。

您可以使用这种方式读取不带空格分隔的字符串:

cin.read ( input_string, sizeof(1000)+sizeof(int) - 1);
size_t read_Len = cin.gcount();
input_string[read_Len] = '';

我可以理解您需要scanf的强大功能来读取给定格式的数据。

您滥用了sizeof .如果你想要 1,000 个字符的空间,你不需要 1,000 本身的大小,你想要字符大小的 1,000 倍。您可以使用1000 * sizeof(char) .由于sizeof返回字符(因此sizeof(char)必须是 1),因此您可以使用 1000 .