C++ sscanf 空格分隔的字符串

标签 c++

这是我的练习代码:

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/

相关文章:

c++ - 在已排序的双向链表中插入节点

c++ - HeapAlloc 间歇性失败

c++ - C++ 中的简单类型变量是对象吗?

c++ - 解释以下C++代码部分

c++ - 使用QT读取socket

c++ - std::this_thread::sleep_for()与main()中的sleep()

c++ - 使用 HoughLinesP 检测矩形物体的准确中心点

c++ - 不能调用基类方法,即使我有一个指向它的指针(装饰器)?

c++ - 如何向链表中的节点插入多个值

c++ - deleteNode 函数出现中断连接列表