这是我的练习代码:
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] = '\0';
我可以理解您需要 scanf
的强大功能来读取给定格式的数据。
关于C++ sscanf 空格分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12518820/